to post messages and comments.

← All posts tagged programming

Баян-статья habrahabr.ru про промисы в жабоскрипте, нашел попутно.

Так вот, там чуваки РУГАЮТ async/await потому что по сравнению с промисами код хуже читается (!!). Вроде не шутят. Беда (!!), говорят, что асинхронный код становится похож на синхронный. И это не один человек, там вроде есть группа с консенсусом на эту тему. Да, и постоянно ссылаются что становится сложно выполнить 2 функции одновременно: Promise.all(f1(), f2()).

Вопрос публике: в вашем проекте какой процент кода вот это вот, запускает одновременно 2 future? Это оптимизация latency на коленке каждый раз? Нафиг так жить?

Какой смысл в node.js если есть dart?

Варианты ответов: 1) под ноду есть офигенне ВЕБ-фреймворк, без которого не жизнь, и оно без ноды на сервере не живет 2) реюзать код с бровзером

В моем случае: чисто енларг-подобный процессинг: схватил — сцепил — залил/отдал, никаких веб фреймворков. Шарить с вебом тоже нечего. Зато строгая типизация с тайпчекером, системные штучки искаропки, раздельные кучи, и самое главное — это то, что оно задизайнено все изначально как надо, не костыльно, весь тулчейн включая package mgr.

Говорю как человек, который к ноде подходит только издалека палочкой потыкать, чтобы не развонялось, а вот с дартом у меня такого нет.

Неявный вопрос звучит так: может я пропустил что-то, что в этом направлении идет еще дальше дарта?

Пишу на дарте, дык реально утомительно и забывчиво писать там везде "await s.readBytes()", вот это await. В котлине здорово придумали вообще на уровне языка чтобы само все делалось.

Мнэ.

KDB+ начали раздавать почти бесплатно. Если раньше лицензия на ядро стоила бешеных бабок (тысячи в год), и выдавалась вручную, то щас туда впилили динамическое измерение ядер во время выполнения, оно теперь постоянно стучится домой, и чуваки разворачивают его на cloud по 5 центов за ядро/час, а малые инсталляции (до 16 ядер) вообще вроде даром для личного пользования (до того была unlimited 32bit версия, но это просто смешно).

tech.marksblogg.com вот тут чувак между делом меряет перфоманс и занимается вещами, которые лично мне не доводилось щупать. Там же сравнение с другими СУБД.

Когда исследуешь багу в OpenJDK, перекомпиляешь по 5 минут, пробуешь разные версии NSTimer, и она то не компилится, то в рантайме нет такой сигнатуры, потому что она, блин только в 10.12, то другой тоже нет, а в мануале твои глаза перепутали макос с tvos справа где написана совместимость, то в недокументированной (уже) версии JNFRunLoop нету addTimer, потому что оказывается она не NSRunLoop, то таймер создался с runloop по умолчанию, но не вертится.. И тогда ты забиваешь на гейские поделки и пишешь простое и ламповое: "pthread_create(...."

Если в Dart разделить целое на целое, получается double:

10/2 -> 5.0

Оператор целочисленного деления выглядит так:

10 ~/ 2

Неявного приведения int к double в дарте нет. Надо везде писать i.toDouble()

А еще во Flutter если ты хочешь нарисовать текст на канвасе, то ОБЯЗАТЕЛЬНЫМ параметром является RTL (left to right или right to left — для арабов и евреев). Я вижу в этом атаку на идею о естественном превосходстве белой расы. Все началось кстати еще с UTF-8.

Щупаю язык Dart в целях как оно там Flutter все дела кросплатформенность, ко-ко-ко (2 платформы, ндя).

Dart как жаба совсем. После Kotlin-а ощущается мною как шаг назад. В отличие от жабы Async/await — есть! Всякие изоляты и мультитредовость еще не щупал. switch/case от С++ целиком 8)

Идейный плагин как-то фурычит, терпимо. Стандартную библиотеку не проиндексировал, найти наследников от Widget не смог. В evaluate/modify автокомплит работает только по полям, а по пропертям не может. Написал switch(), а он мне его возьми и подкрась моментом —
требует чтобы все кейсы из енума там прописал. Не отстал, пока не написал. Короче, проблемы первого мира у меня.

Релоад работает. Жосткий релоад тоже работает.

Я хочу написать десктопно-планшетную приблуду. Пробовал на гейбуке разные эмуляторы, уже упоминал. Остановился на Bluestacks — самый быстрый и приятный (родной SDK эмулятор тормозит 3 кадра в секунду). Минус Bluestacks — говно мамонта, даже настроек нету, HiRes не поддерживает. Афтары пишут: сорян, гейбук не в приоритете, венда наш фронтир. Зато честно. В отличие от также шустрого Andy (в нем Android 4.4) флуттер на Bluestacks поднялся и взлетел без проблем.

Жалко нету нативного десктопного таргета, но с методологией разработки (релоады) на девайсе/эмуляторе это менее важно.

Буду продолжать информировать.

Искал быстрый эмулятор андроеда под macos, нашел Andy, официальный сайт, все дела. Эмулятор вроде хороший, отзывчивость на высоте, по сравнению со стандартным эмулятором (который типа тоже типа быстрый с ускорителями, но видно, что ему тяжело, а Andy гораздо отзывчивее, технология там хитрая внутре)

Вот только Flutter под ним не запускается, не может инициализировать графику. Но Andy может эмулировать несколько чипсетов, но, скотина, под маком не имеет гуя для настроек, а по коммандлайну я еще не нашел док, а встроенный хелп об етом не пишет.

Самое позорное, что этот бесплатный софт абсолютно молча без опций и всяких opt-out принес с собой какое-то shitware, которое, выждав часик, сообщило мне, что рекомендует мне просканировать собою компьютер. Теперь в чек-листе чем Macos хуже Линукса можно смело ставить эту галочку.

Блин, парился через teamviewer заокеан, там xcode, а к xcode подключен iphone, а в iphone торчит t-mobile, а на iphone наш Qt application, который не коннектиццо к серверу в упор.

А в qt creator видно что приходит ошибка NetworkError, логи не пишет, а кто отправляет и почему — непонятно, а отладчик не ставит брякпойнты в сорцах Qt, а приходит qt сигнал — и понятно, что никаких тебе стектрейсов. Плакал, пока не запустил НЕ через отладчик Qt Creator, а прямо в xcode, там брякпойнты ставит.

Написал ему bsd socket-ное: sock = socket(); sockaddr = getaddrinfo("33.44.55.66"); connect(sock, sockaddr) — коннектиццо, а через QTcpSocket — network error.

Долго ли коротко, дошел по приборам до побайтового сравнения addrinfo, и оказалось, что getaddrinfo("33.44.55.66") работает нормально и возвращает addrinfo_t с address_family af_inet6, потому что t-mobile не дает ipv4 совсем, а Qt видит этот ip и (справедливо?) думает что я хочу ipv4 (там намудрено внутре Qt, кароч).

Все это через тормозное teamviewer, думал я сдохну. (А когда заметил в конце, что сигнал приходил не асинхронный, а таки синхронный, снова плакал, но недолго).

Короче, пишешь ты такой на андроеде media player. Взял в руки С, взял OpenSL ES, который на С написан, и там они размахивают тем, что тред у них, в котором ты кормишь данными звуковуху, работает в реалтайм приоритете.

Значит, написал ты код, у него 1% cpu time, музыка сладчайшая льется, а потом нажимаешь home, прога уходит в background, и звук начинает рваться.

И через некоторое время ты перетаскиваешь код в android service (который отдельно от гуя работает) и там тебе дают больше ресурсов, и не замедляют проц, когда ты уходишь в фон. И видишь ты, что твои наиболее жручие рутины в сервисах работают в фоне наконец-то за нормальное время а не тормозят в 10 раз как если как раньше в процессе гуя.

Но звук все равно рвется. Тогда ты начинаешь кормить звуковуху кусками не по 10 мсек, а по 500. Шоб значит, цыкл не тормозил. И с ужасом наблюдаешь, что реалтаймовый OpenSL ES пока играет эти 500 мсек ВНУТРИ СЕБЯ — прерывается 5 раз и хрипит.

Вот дела, и ты трахаешься день, чтобы что-то понять. Перечитаны форумы и гугл группы. Буфера увеличены в количестве и уменьшены. Приоритеты выставлены и снова сняты. Записи в буфер кратные и нечетные пробованы. Даже компилил с оптимизацией и без.

Оказывается, что если ты инициализировал плеер не с частотой 48000 а с 44100, то такая жопа. А 48000 надо узнавать только из жабового вызова, который вернет нативную частоту всей колымаги. В старых устройствах оно вообще ничего не возвращает, и надо пользовать 44100, в новых 48000 вот.

Мне в общем норм по-всякому, но надо ж об этом где-то писать покрупнее, шоле.

Сколько я времени потратил на неправильно написанные JNI названия функций на C стороне! Мама! Просто дофига. Программа на андроеде крешится в рантайме оттого что не находит ф-ю.

А петонисты и пхп-шники, а еще жабоскриптеры живут в этом и для них норм. Кошмар.



Кто так же, как и я, любит, когда СУБД — это отдельная директория с /bin, /требуха и /текстовые_конфиги, тот поймет мою боль от инсталляции Microsoft SQL Server 2008.

И да, их у меня уже стоит несколько версий, management studio принесла с собой свою, так не ставилась. Клоуны, мля.

Вот как бывает с яркими индивидуальными либерахами, офигевшими от имеющейся свободы, атомизации общества, отсутствия авторитарных ориентиров, и наличия связанных с этим всем ништяков:

planningforaliens.com

Иллюстрация абсолютной свободы в применении к большой задаче (как результат — невозможность решения таковой). Да и в применении к задаче "чтобы всем было хорошо" тоже как-то не выстрелило.

Когда мне будут говорить, что в свободном мире ты свободен делать что хочешь, но если не знаешь юриспруденции (тебя засудит ближайший патентный тролль) или банковского дела (ты не инвестируешь! а кто не инвестирует, тот сгорает в инфляции; ты не берешь кредит! с кучей мелких букв в контракте), то я буду тыкать сюда: хочешь написать домашнюю страничку, но не знаешь Gulp? в свободном мире ты просто сходишь с ума от свободы.

Отличие хипсторских поделок от профессиональных. Запустил глобальный поиск с внезапно кучей результатов в Visual Studio Code, оно прилегло, в смысле реакции на клаву и мышу.