Category: it

сто друзей

Развели хлопца

У меня есть команда разработки, обходилась примерно в 1.5млн/мес, без налогов. Сначала они не могли работать, потому что им нужен был аналитик, потом не хватало тестировщика, после найма этих понадобился отдельный тимлид (плюсом к менеджеру), которому некогда код писать

Закончилось все примерно так: по условиям договора надо было исходный код записать на мат.носитель, а их не оказалось под рукой, в команде из ~10человек (2.5млн/мес) сд-болванку или флешку раздобыть было некому. Так я разочаровался в этом вашем ИТ

В каментах:
то есть им еще менеджера по бизнес-процессам не хватало?

ref: по наводке willy
сто друзей

Сысоева взяли за "нарушение" авторских прав на собственную разработку

О как! А мне ещё говорили - всем надо open source разрабатывать, а не закрываться. И регистрации права можно не делать, все всё знают и так по логину. А деньги брать за поддержку. Ну или там модули.

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

Вся эта чешуистика с открытым кодом позволяет большим дядям выбросить на улицу разработчика, когда 99% процентов написано и посадить студентов за еду допиливать вместо него. Ну и в суде без всякого сказать "да мы устно дали указание - разработай самый крутой в мире сервер". Слова больших дядь весомее, потому что они могут и в суд заносить знакомым, когда те попросят, а Игорь не может.

Игорю - сил и удачи!
сто друзей

И про всеобщий коммунизм

Навстречу одному сегодняшнему празднику. Таймс пишет:
===================
В ответ на критику про затягивание релиза, лидер CentOS указал, что дистрибутив развивает всего три разработчика
===================

я как-то говорил уже, да и не только я - Open source это способ снизить затраты в отрасли, то есть пролетаризация труда. В инженерии в своё время это было патентование, в таксовании - это юбер-яндекс, а в программировании Брукс долго плакал, что серебряной пули нет, а оказалось - вот она - работа за еду в Google Summer of Code, чтобы потом можно было испытывать чувство глубокого морального удовлетворения от своего гитхаба. Правда, на хлеб этот гитхаб не намажешь, и в стойло бензиновое его не поставишь, но зато почесать ЧСВ можно, не выходя из квартиры. Ну а то, что у корпораций снизились затраты на ФОТ, потому что герои под правильную рекламу сами бегут показывать свой код друг другу - так это вышло случайно, вы не думайте, это не мы, и вообще, почему уже 10 минут не пишешь свободный код, а ну пошёл на галеры, сука! Субботник не закончился, все за работу, товарищи. "К топкам!".mp4.

Ну а результат вы видите в Таймс. Миллионы пользователей по всему миру, денег никто не заплатил (даже Чиркову на год собирают с трудом, хочется заметить, хотя это и не про центос) и всего три разработчика меняют слова red hat на centos. Скоро будет один, жрущий мало, ездящий на автобусе или вообще работающий из дома, а жены, которой нужна шуба, у него нет вообще, ну и весь мир будет говорить - "медленно пИшите, пишИте быстрее, а то поставим себе оракл". Ставьте, хочется сказать. Не пугайте, ставьте быстрее. Чем быстрее вы поставите оракл, тем быстрее настанет время, когда будет с кого брать абонплату за soft as service. Вы же сами этого и добиаетесь, ггг.
сто друзей

Вынесу из чатиков

Вот, что пишут про Валинорские методы создания ПО. у нас оно, в общем, такое же.
Наплыв в отрасль модно молодёжных привёл к закономерному итогу. Ожидаю снижения зарплат до среднеинженерных.
==============================

Skype пошли обратнъм путем и все сделали на js + Electron. Рассказъвали как поддержка нескольких native команд бъло - дорого / некоординированно / качество скакало по платформам. Сейчас вон качество везде говно - зато ровно!
сто друзей

Сетевым пограмистам посвящается (немного про Net-snmp)

В документации сказано:
===============
Restrictions on Multi-threaded Use of the SNMP Library
2. The MIB parsing functions use global shared data and are not
multi-thread safe when the MIB tree is under construction.
Once the tree is built, the data can be safely referenced from
any thread
.
===============

Пгастити, написан бред. Простой пробег по уже закачанному дереву будет в целом беcпроблемным.
Но вот как только вам потребуется несуществующий модуль (FOO:sysDescr, админ описался, бывает) или хвост oid-а будет заполнен instance (ifEntry.bar), которого нет в MIB (это распространено у циски, они любят name запихнуть в виде индекса), тут вы и отгребёте все прелести при наличии в приложении threads. Модуль не будет грузиться из файла, нет, до такого бригада кодеров не дошла всё-таки, но set на global будет. Со всеми вытекающими.

В общем, хочется символьности в oid - парсить в одно лицо с локом. Цифрами - безопасно.

Perl-модуль, кстати, тоже подвержен. Спасает только то, что переключения контекста там, как мне помнится, за пределами XS, так что по идее не должно падать, ну и пока не падало вроде.
Python-модуль вам на домашнее задание.

Патч не буду писать, там api менять надо. С нуля тоже нету времени.

p.s. Ах да, фича -Ib (snmpcmd(1)) также имеет родовую травму, там даже более кучеряво, падает просто сразу, общая области памяти, Julio.
сто друзей

Вы как программист собрались писать в open source style? А не хотите ли послать?

Я уже писал, насколько потребительски относится средний программист к open source. Пришло ещё одно подтверждение. Вот, прямо даже скрывать имена не буду, народ должен знать своих "героев", так и процитирую:

Constantine Peresypkin: чуваки, кто-то знает ебучий синтакс постгреса? какого ебаного хуя: ``` devenv=> select data->'prog',data->'args' from events where id = '6621bb83-5147-4b82-a4de-389fb70ccaba'; ?column? | ?column? --------------+-------------------------------- "./start.sh" | ["-Y", "-n", "-E", "-S", "-j"] (1 row) devenv=> select data->'prog', json_array_elements(data->'args') from events where id = '6621bb83-5147-4b82-a4de-389fb70ccaba'; ERROR: function json_array_elements(jsonb) does not exist LINE 1: select data->'prog', json_array_elements(data->'args') from ... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. ```
Max Fedorov: ну подгони ему константные данные "select * from json_array_elements('[1,true, [2,false]]')"
Constantine Peresypkin: работает
и что теперь?
Max Fedorov: значит data->'args' не жесон
Constantine Peresypkin: еще варианты?
devenv=> select pg_typeof(data->'args') from events where id = '6621bb83-5147-4b82-a4de-389fb70ccaba'; pg_typeof ----------- jsonb (1 row)
не надо меня за дебила считать :)
и как текст тоже не работает
никак не работает, хотя в теории '[1,true, [2,false]]' - это текст, но не, блядь, работает
``` devenv=> select pg_typeof(data->>'args') from events where id = '6621bb83-5147-4b82-a4de-389fb70ccaba'; pg_typeof ----------- text (1 row) devenv=> select json_array_elements(data->>'args') from events where id = '6621bb83-5147-4b82-a4de-389fb70ccaba'; ERROR: function json_array_elements(text) does not exist LINE 1: select json_array_elements(data->>'args') from events where ... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. ```
Filippok: jsonb_array_elements
Constantine Peresypkin: во! сразу видно, да, так работает
aruslan: ох, это сейчас хорошо было! прямо энергетически жахнуло добрым утром :)
Max Fedorov: https://www.youtube.com/watch?v=OiUzycgw8qM
loyso: (звук) https://coub.com/view/yqwkb
Max Fedorov: https://www.youtube.com/watch?v=xmkifWcTXiI
aruslan: не даёте продохнуть!
Constantine Peresypkin: придумать две функции когда у них там повсеместно одна для нескольких аргументов - это сильно!
но я за синтакс спрашивал и ошибка таки в синтаксе и была
aruslan: думаю «ошибка в синтаксисе» имеет все шансы стать мемом.
Constantine Peresypkin: ну пиздец, я уже все волосы на жопе вырвал!
aruslan: камрад, мы с тобой :)

Замечу, платить никто не собирается. Документацию читать тоже никто не собирается. И obartunov Бартунов и vitus_wagner Вагнер доступны через соцсети и довольно популярны. Пользуясь постгресом и будучи русскоязычным не знать этого как-то нельзя. Я же знаю, хотя постгресом пользуюсь последнее время редко. Так что, можно им патч прислать, если уж есть ошибка, они закоммитят и протолкнут (ну или хотя бы в Postgres pro включат).
Но это больно сложно. Константинам Пересыпкиным надо чтобы дядя бесплатно им сделал, разжевал и в рот положил. Сами жевать не могут-с. Баре-с. Кстати, насколько я понял, живущие в Америке, где вообще-то за всё принято платить. Такие дела.
сто друзей

iqm (linux)

Как мониторить udp дропы на отсылке?
netstat -s -u
SndbufErrors: 28002897
Это показывает, скольким sendto вернётся EAGAIN если поставить MSG_DONTWAIT.
Дропы здесь появляются оттого, что не хватает буфера на сокет. При слишком частой посылке пакет не может разместиться, а qdisc его ещё не подхватил, поэтому дроп.

Далее идёт мониторинг очередей на отсылку (по умолчанию типа FIFO).
tc -s -d qdisc ls dev eth0
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 8309882802 bytes 6782176 pkt (dropped 8376145, overlimits 0 requeues 20874)
backlog 0b 0p requeues 20874
Это показывает, что очередь на отсылку переполняется. То есть в буфер сокета он поступил, но qdisc видит, что допустим, в устройстве мест нет, или ещё по каким своим причинам, отбрасывает, тогда дропы будут видны здесь.

Когда мы поставили большой буфер, то sendto с MSG_DONTWAIT не вернёт EAGAIN, он разместит пакет в ядре и выйдет (то есть, формально sendto не знает, ушёл ли пакет реально или нет), и потом по ksoftirq будет отрабатывать qdisc и глядеть, влезает ли пакет куда-то или нет и будет делать дропы.
Так что отсылка на большой скорости в физический интерфейс с меньшей скоростью будет грузить процессор, но дропы будут видны не на интерфейса, а в qdisc.

Далее будут дропы на интерфейсе
ethtool -S eth0
tx_dropped: 0
сто друзей

Разоблачение производителей зонтиков.

Купили очередной зонтик zest. Ну и заинтересовало меня, что ж за производитель такой "сделано в британии", все дела. Конечно, червячок сомнений уже раньше закрался, когда в прошлый раз я искал по гуглу без фанатизма, ну и нашёл, конечно, только магазины.

В этот раз заинтересовался пристальней. Штрих-код и, правда, кагбе говорит нам, что изделие из страны королевы Елизаветы, начинается на 506. И первым адресом стоит британский, потом латвийский, потом польский, ну и наш до кучи. Типа мировой производитель. Полез смотреть адрес в гуглах этой самой NB Company, produced by которая. Нашёл: вот оно - чудо. Бизнес-центр класса C. Даже C-- ;) Ещё и рядом с лавкой халяльного мясника. А зонтики-то недешёвые. Так что, понятно, никакой это не британский производитель, в этих ваших Лондонах чисто офис с одним телефоном для проформы (там на картинке со стороны Killburn High Road телефончик IT-лавки отличается он нашего воспитуемого на две цифры ;), а производитель самый обыкновенный наш, китайский, в крайнем случае латвийский. Точнее так - наш, но на латвийский капитал тамошних ЕРЖ. Хе-хе.

Зонтик в целом ничего, жалко только что врут-с. Хулио врать-то... Вон Elche Collection честно говорит - в Курске делали. Эколас вообще честно пишет - мы из Ростова. Обувь, что у тех, что у других нормальная. Не высший шик, но вполне за свою цену.
А тут типа позиционируемся мировым брендом. Офис снимите посолиднее, не в Западном Хэмстеде, а в Сити и клепайте зонтики с правильным штрих-кодом. И станете мировым брендом. Мы будем только рады. А пока как-то так... Как всегда, в общем.