← All posts tagged code

вставлять видосики с ютубчика что бы выглядело ОК

<div style="position:relative; width:100%; height:0px; padding-bottom:56.25%;">
    <iframe style="position:absolute; left:0; top:0; width:100%; height:100%" frameborder="0" allowfullscreen="allowfullscreen"
        src="https://www.youtube.com/embed/peyo_97BOmI">
    </iframe>
</div>


попытался заставить панго рисовать текст фритайпом. Почти получилось, я не понимаю что упустил... Может подскажет кто?

	PangoFontMap *font_map = pango_ft2_font_map_new();
	PangoContext *cr = pango_font_map_create_context(PANGO_FONT_MAP(font_map));
	
	PangoFontDescription *font_description = pango_font_description_new ();
	pango_font_description_set_absolute_size (font_description, 62 * PANGO_SCALE);
	
	pango_context_set_font_description(cr, font_description);

	PangoLayout *layout = pango_layout_new(cr);
	pango_layout_set_font_description(layout, font_description);
	pango_layout_set_text(layout, text, -1);
	pango_layout_set_alignment(layout, PangoAlignment::PANGO_ALIGN_RIGHT);
	pango_layout_set_width(layout, -1);
	

	FT_Bitmap bitmap = { 0 };
	bitmap.width = 300;
	bitmap.rows = 100;
	bitmap.pitch = bitmap.width * 4;
	size_t sz = bitmap.rows*bitmap.pitch;
	bitmap.buffer = new unsigned char[sz];
	memset(bitmap.buffer, 0x88, sz); //текстуру сереньким рисуй сцуко
	bitmap.pixel_mode = FT_PIXEL_MODE_BGRA;
	pango_ft2_render_layout_subpixel(&bitmap, layout, 0, 0);
	

Я туплю. Я хочу заменить все <date> и <data> теги на <string>
Почему это не работает?
... | sed -e 's/\<\(\/\)?dat[ae]\>/<\1string>/g'   ...
если убрать "?" то матчит только закрывающиеся теги, что за говно?

Prelude> length ("Hello")
5
Prelude> length ("Hello", "World")
1
Prelude> length ("Hello", "World", "!")

<interactive>:7:1:
    No instance for (Foldable ((,,) [Char] [Char]))
      arising from a use of ‘length’
    In the expression: length ("Hello", "World", "!")
    In an equation for ‘it’: it = length ("Hello", "World", "!")

Что-то застопорился неожиданно на https://stepic.org/lesson/12321/step/8
Не пойму, что не так...

perms :: [a] -> [[a]]
perms [] = []
perms [x] = [[x]]
perms (x:xs) = concatMap (interleave x) (perms xs)
  where
    interleave :: a -> [a] -> [[a]]
    interleave a l = interleave' a l []

    interleave' :: a->[a]->[a]->[[a]]
    interleave' a [] rs = [a : rs]
    interleave' a ls@(l:el) rs = (ls ++ [a]  ++ rs) : interleave' a el (l:rs)

на заданьку написал функцию
multSecond = (*) `on` snd
Хаскель говорит что ее тип
multSecond :: (a, Integer) -> (a, Integer) -> Integer
При чем я впритык не понимаю почему a одинаковые. Например, в чем проблема вызвать
multSecond ('A',2) (True,7)
?

 ~/ ping google.com
PING google.com (216.58.192.46): 56 data bytes
64 bytes from 216.58.192.46: icmp_seq=0 ttl=58 time=3.457 ms
64 bytes from 216.58.192.46: icmp_seq=1 ttl=58 time=2.943 ms
64 bytes from 216.58.192.46: icmp_seq=2 ttl=58 time=7.758 ms
64 bytes from 216.58.192.46: icmp_seq=3 ttl=58 time=5.468 ms
64 bytes from 216.58.192.46: icmp_seq=4 ttl=58 time=5.396 ms
64 bytes from 216.58.192.46: icmp_seq=5 ttl=58 time=6.044 ms

я в вайфае аэропорта (SFO) oO
прямо ололо

Вот такая няшнота на битбакете :)
pushing subrepo repo to ssh://hg@bitbucket.org/company/secretrepo
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
remote:
remote:      .-. .-.
remote:     (   |   )
remote:   .-.:  |  ;,-.
remote:  (_ __`.|.'__ _)
remote:  (    .'|`.    )
remote:   `-'/  |  \`-'
remote:     (   !   )
remote:      `-' `-'\
remote:              \
remote:               )
remote:
remote: Happy St. Patrick's Day!
remote:

не часто задаю вопросы по питону, но даже не знаю как нагуглить. Вот есть список. Я его последовательно фигачу фильтрами, мапами. Общим, вот кот специально для пимера:
#!/usr/bin/env python
import sys

if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        lines = f.readlines()
        lines = map(str.strip, lines) #stripping endlines
        lines = filter(bool, lines) #stripping empty lines
        lines = filter(lambda l: ':' in l, lines) #filter out strings withot :
        lines = map(lambda l: l.split(':', 1), lines)
        lines = map(lambda l: "=".join(l), lines)
        print "\n".join(lines)

Можно легко заметить паттерн. Общим, а я хочу зафигачить (монаду?) что бы можно было все как-то чейнить? Я наваял что-то типа этого, но выглядит ужасно. Есть ли методы получше?

#!/usr/bin/env python
import sys

class Monadinize():
    def __init__(self, l):
        self.l = l

    def map(self, f, *args):
        self.l = map(f, self.l, *args)
        return self

    def filter(self, f):
        self.l = filter(f, self.l)
        return self

    def done(self):
        return self.l

if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        out = Monadinize(f.readlines()) \
                    .map(str.strip) \
                    .filter(bool) \
                    .filter(lambda l: ':' in l) \
                    .map(lambda l: l.split(':', 1)) \
                    .map(lambda l: "=".join(l)) \
                    .done()
        print "\n".join(out)

Ведь паттерн такой общий, должны же быть инструменты, а?

жуек, жуек, я ленив. Есть ли какой-то более простой/быстрый способ проверить на пренадлежность точки триугольнику?

bool sameSide(const Vec2i &a, const Vec2i &b, const Vec2i & t1, const Vec2i & t2)
{
    const Vec2i orig = b-a;
    const Vec3i cp1 = Vec3i::cross(orig, t1-a);
    const Vec3i cp2 = Vec3i::cross(orig, t2-a);
    return cp1*cp2 >= 0;
}
// if p inside abc triangle
bool triangleTest(const Vec2i &p, const Vec2i &a, const Vec2i & b, const Vec2i & c)
{
    return sameSide(a, b, c, p)
            && sameSide(a, c, b, p)
            && sameSide(c, b, a, p);
}

как такое шаманство вообще работает?
data Nat = Zero
         | Succ Nat
         deriving (Show, Eq, Ord)


nat2int :: Nat -> Int
nat2int     Zero = 0
nat2int (Succ a) = 1 + nat2int a

int2nat :: Int -> Nat
int2nat 0 = Zero
int2nat x = Succ (int2nat (x-1))

add Zero n     = n
add (Succ a) n = add a (Succ n)

main = do
    print $ (int2nat 444) < (int2nat 621)
    print $ (int2nat 622) < (int2nat 621)
    print $ int2nat 5

> True
> True
> Succ (Succ (Succ (Succ (Succ Zero))))
 
ну ладно шоу и eq, но <> как?

ну что за фигня снова :(
m ^^^^ 0 = 0
m ^^^^ n = m * m ^^ (n-1)

main = do { putStrLn (show (map (^ 2) [1..5])) ;
			putStrLn (show (map (^^^^ 2) [1..5]))
		}

Вывод - 
[1,4,9,16,25]
[1.0,4.0,9.0,16.0,25.0]
Почему одно целое, а другое не очень?

походу настроить SublimeHaskell не среднего ума дело :( буду использовать fpcomlete)...

cabal install aeson
Resolving dependencies...
In order, the following would be installed:
dlist-0.7.1 (new package)
text-1.2.0.0 (new version)
hashable-1.2.2.0 (reinstall) changes: text-1.1.0.0 -> 1.2.0.0
scientific-0.3.3.1 (new package)
attoparsec-0.12.1.2 (new version)
unordered-containers-0.2.5.1 (new version)
aeson-0.8.0.2 +old-locale (new package)
cabal: The following packages are likely to be broken by the reinstalls:
unordered-containers-0.2.4.0
case-insensitive-1.1.0.3
Use --force-reinstalls if you want to install anyway.

вспомнил почему хаскел говно :(

> cabal install haskell-src-exts
Resolving dependencies...
Configuring haskell-src-exts-1.16.0...
Failed to install haskell-src-exts-1.16.0
Build log ( /Users/vlad/.cabal/logs/haskell-src-exts-1.16.0.log ):
Configuring haskell-src-exts-1.16.0...
setup-Simple-Cabal-1.18.1.4-x86_64-osx-ghc-7.8.3: The program happy version
>=1.17 is required but it could not be found.
cabal: Error: some packages failed to install:
haskell-src-exts-1.16.0 failed during the configure step. The exception was:
ExitFailure 1