janPona
программирование Играюсь в свободное время, которого у меня предостаточно. Решил понять, где я никогда не бывал в Харькове. Для этого выгрузил с помощью сервиса Google Takeout полную историю своих местоположений начиная с 2015 года. 700 с лишним тысяч точек.

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

Чтобы наложить мою карту на карту местности, я сначала использовал библиотеку Leaflet, а потом забил и просто добавил свой тайловый сервер в приложение OsmAnd в качестве источника данных, и — о чудо — все стало просто охуенно. Более того, OsmAnd жёстко закешировал мои тайлы, и, несмотря на то, что я хостил сервис только в домашней сети, карта осталась работоспособной даже когда я вырубил сервак и пошёл гулять.
Linda-chan
программизм Самое страшное, что я видела в программировании – это когда один чувак читал код, переводя на русский язык всё встреченное и осмысливая полученное.
k-mx
программирование Уже который день не могу доработать плохонаписанный код. И как всегда, дело не в синтаксисе моего любимого ЯП, а в попрании всех базовых правил хорошего стиля. Perl ругают за нечитаемость, мол код вроде китайской грамоты. Но на практике, я практически не встречаю всратых конструкций. Т.е. всегда могу отличить червя от опарыша, а ступор мозговины вызывает шизофазия. Плохоструктурированный код, сильносвязанные объекты и методы на 500+ строк. Деревья, каждое из которых знакомо и понятно, но леса за ними разглядеть решительно невозможно. Я такое в разных языках встречал и оно всегда заставляет плодоносить скудоумием вместо результата.
n3lab
Juick ? психология coding я вот говнокодер. и у меня пет проектов ну прям очень дофига, но только единицы закончены. а 95% останавливаются и не доделываются, хотя там казалось бы доделать — просто плюнуть и растереть. постоянно то запой, то влюбился, то сложно, то еще какие-то другие интересы — и вот это все мешает закончить. и вот вопрос к кодерам: а у вас сколько законченных, а сколько незаконченных именно ваших проджектов? и вопрос к психологам: как заканчивать-то, епта? а то оно есть, а показать никому нельзя, потому что незакончено :(
mabu
программирование Чат, а как ты в сервере удаляешь зависшие соединения?
Обходишь список подключений и смотришь на актвность каждого сокета — если в течение 10 минут не было активности, значит можно удалять?
mabu
программирование Не уничтожается ClientContext.
Кто‐то держит на него ссылку. Счётчик ссылок не равен нулю, следовательно, объект не уничтожается, клиентский сокет не закрывается, соединения висят.
SannySanoff
programming С++ продуктивность корутины позволяют писать в С++ красиво, без callback hell

но отнимают у тебя:

* call stacks

* local variables debug info

* compile time speed

* и (немного) уверенность (баги в конпеляторе, например даже вот в clang10).

речь идет об использовани корутин для async/await, см. для примера cppcoro: это либа то ли от автора драфта, то ли где-то рядом.
Linda-chan
vb программизм В VB есть два вида деления: обычно и с отбрасыванием дробной части. Ну тоесть:
3 / 2 ==> 1,5
3 \ 2 ==> 1
Сегодня не могла понять, почему у меня при делении двух чисел вместо 255 получается 260. Вроде бы всё должно быть правильно. Были сомнения в точности одного из чисел, но там тогда получилось бы 256 или 254, но не такая разница. Поэкспериментировала, выяснила, что перед делением у чисел отбрасывается дробная часть, потом они делятся, и дробная часть отбрасывается снова. Вот и получилось. Честно говоря, обычно делю только целые числа и о такой особенности каждый раз очень хорошо забываю =_=
Linda-chan
Windows программизм VB6 любит твипы. OLE любит химетрики. GDI любит дюймы. Чтобы получить размер картинки в пикселях в StdPicture, нужно всё это конвертировать в миллиметры, потом в дюймы, потом узнавать, что там с DPI у экрана, и результат округлить. Круто же.
Linda-chan
Windows программизм Вчера всю ночь воевала с интересным глюком в своих программах. Короче, есть программа CloudIM, которая использует всякие дропбоксы в качестве транспорта. Когда приходит сообщение, в трее начинает мигать иконка, как других мессенджерах. Кроме того, есть одна утилита, которая запускает на фоне другие утилиты и каждый этап показывает мигающими иконками в трее. Всё это прекрасно мигало в Windows XP, но оказалось, что в Windows 7 просто показывается первый «кадр». Сначала думала, что это как-то связано с тем, что на машину с Нанами, где запускались эти проги, я хожу по RDP, но и с монитором ничего не изменилось. Потом предположила, что это специально сделано в системе, чтобы программы не раздражали пользователя. Короче, начала разбираться. Для начала сделала простую программу, которая показывает окошко и при этом выводит иконку в трэй, а при закрытии окна – убирает иконку. Так же в окне была кнопка, которая меняет иконку на следующую, а сами иконки программа брала из стандартных (те, что выводятся в окнах сообщений вроде красного крестика – их можно специально получить, чтобы в твоей программе они соответствовали тому, что выдаёт система). Что интересно, программа работала нормально. Даже если зажать кнопку энтером, иконки всё равно очень быстро менялись, так что борьбу системы с раздражителями я отбросила. Тогда перешла к натурным испытаниям.
// To be continued :}
janPona
работа программирование typescript Бля, как же заебала эта срань. Израильские коллеги, неисправимые оптимисты, берутся писать библиотеку, не зная языка на котором они пишут. Generics? Не, не слышали. Синтаксис даётся им с трудом, через часы гугления на SO. Туллчейн они не настроили. Философии языка они не понимают в принципе.

А библиотека нужна для унификации работы с данными, поэтому дженерики там нужны везде и насквозь. Ну вот как? Как?!

Ах да, забыл сказать. Язык-то простейший — TypeScript. Это новая Java, но, как и у джавы, изобретённой с добрыми намерениями, у этого языка вырастает мощнейшая армия неосиляторов-опошлителей.

И вишенка на торт — чувак, который не знает TypeScript, считается у нас на работе TypeScript-евангелистом. Фух, высрался, полегчало.

P.S. Данная история немного проливает свет на то, почему рухнул "Берешит".
max630
? Windows programming А вообще есть легальный способ компилять плюсы под виндовс бесплатно для коммерческого использования? В лицензии на visual studio tools вон чо пишут:

visualstudio.microsoft.com

You may install and use any number of copies of the software *to use solely with* Visual Studio Community, Visual Studio Professional, and Visual Studio Enterprise, to develop and test your applications.
Ещё смешное, что VS Code именно туда и посылает code.visualstudio.com
SannySanoff
programming Хипсторы изобрели микросервисы на ноде, только потому что например WebSphere на жабе медленно запускается каждый раз. Все остальные блага микросервисов они притянули за уши уже потом.
SannySanoff
programming интеллектуальное_гопничество spectrum.ieee.org

Cobol powers 95 percent of ATM swipes, 80 percent of in-person transactions and 43 percent of banking systems, according to Reuters.
Где теперь ваш монгодб, руби, петон и node js, хипстеры? Почему пенсионерам теперь приходится отрываться от своего домино, чтобы вы не просрали ваш гребаный мир?
SannySanoff
programming та фигня с петоном #2967071 не закончилась, я взял в руки numba и короче улучшил еще в 200 раз.

нумба как-то хитро уделывает векторные операции из numpy и особенно из pandas, так что теперь, всё на for loops переписывать?

метание: туда, сюда. Из цыклов к ndarray оттуда обратно к цыклам.

Нет шобы писать на kdb или на julia сразу, детский сад прямо (код не мой).
Shura
Python programming life Короче записался на 3-х дневный интенсив по пайтону, посмотрим что это и с чем едят. Первая трансляция сегодня в 20:00. Если интересно, можно глянуть тут: youtube.com
SannySanoff
programming Однако по долгу службы оптимизирую петон. Чужой код с numpy. Человек простой, местами голыми руками в цыклах проходится по массиву из numpy, чото там экспоненциально усредняет, затухает.

Карочи, если вытащить из numpy array число (скаляр), и потом его складывать с аккумулятором например, то получается тормоза, потому что вытаскивается np.float64 и вся петонья арифметика над скалярами дёргает в результате за numpy кишки.

А если массивчег вначале превратить в tolist(), то есть в детсадовские петоньи даблы, то всё работает в 10 раз быстрее, а точность в 9 знаке (чем пугают нас пугаторы) нам не очень-то и хотелось и изначально.

Вот такой вот этот петон. А до этого я и так прооптимизировал всё шо можно было с 45 секунд до двух.
SannySanoff
programming непонятно Бывает задашь вопрос на прог. форуме, ответит тебе чувак из той самой лавки, которая это написала, но ответит это невнимательно прочитав вопрос, и ответ звучит "смотри как устроен цыкл FOR в учебнике 1 класса". А вопрос-то был гораздо более высокого уровня. И если бы его кто-то ткнул носом в его ошибку, ему тогда было бы западло ответить более точно, потому он такую лажу ответил перед этим, стыдно ему наверно, и тред просто в офигении замолкает.
SannySanoff
programming profit kdb Написал мониторинг. Поставил, стало быть, prometheus. Штук десять разных систем льют в него данные.

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

Сделал я pushgateway, то есть как не рекомендовали отцы. И из скриптов туда заливаю данные, а потом сам прометеус их оттуда готовенькими всасует. А данные у меня разные есть, но как известно, данные данным рознь. Таковая система работает с данными типа "загрузка ЦПУ", но плохо работает с данными "запросов в секунду", потому что их хорошо агрегировать "запросов в минуту", "в час" итд. Прометеус это умеет, но в системе с пуш гейтвей не работает, потому что если я например буду каждую секунду в гейтвей заливать цифру "запросов-в-секунду", они не будут там накапливаться, а только последнее хранится. Потом раз в полминуты эти данные забираются уже прометеусом и сами понимаете. Это не синхронизируется в принципе. И не лечится. Так задизайнено. Keep it simple. Ну я приблизительно синхронизировал, порядок совпадает и ладненько. Всякие там jobs, instances как положено.

Потом пошел значит через API запросы гонять и рисовать стало быть graphviz граф на ПЕТОНЕ, в котором на дугах нарисовано к-во запросов в минуту час итд, а в квадратиках загрузка процов итп. Получилось пресимпатишно. НО.

1) куча запросов к прометеусу за данными — тормозит, сотня запросов к прометеусу на 1 отрисовку
2) pushgateway со своими нерешаемыми проблемами.

ДОЛГО ЛИ КОРОТКО

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

Взял в руки kdb+. Написал парсер заливаемых данных (POST query). Написал табличку в памяти которая хранит всё что в нее кладут, без вопросов, для последних нескольких миллионов записей, подчищая.

Вместо 100 запросов за данными к прометеусу, теперь запускаю 1 раз весь отрисовочный код, собираю в коллекцию все запросы которые были сделаны (запросы структурно оставил те же самые, токо в kdb syntax перевел), а отдаю нули. Потом 1 раундтрип к кдб с массивом запросов. Потом второй проход снова запускаю отрисовочный код, на этот раз он реально рисует: запросы свои запрашивает, но никто никуда не ходит — все ответы уже на руках.

Результат:

Код отрисовки стал двухпроходной (к-во и структура кода не изменилось, 7 строк ПЕТОНА добавилось которые запускают 2 прохода).

Весь код на kdb+, заменивший прометеус, состоит из 8 (восемь!) строк: пять строк REST сервер беcпарольный, который принимает метрики. 3 строки второй сервер, запароленный, в нем собственно определение таблицы 1 строка, к нему приходят с отрисовочного кода запросы за данными, и две строки утильных функций с повторяющимся кодом для агрегации.

Код, отправляющий данные с сервисов, — без изменений.

8 строк на нормальном языке ваш прометеус, миллениалы.

Да, и алерты на кдб проще будет прикручивать: нормальный язык, а не конечно любопытный, но ограниченный язык запросов к прометейной базке.
justonemore
работа программирование COVID-19 Быть на связи как минимум в двух мессенджерах – в корпоративном и в Telegram. Следить за тем, чтобы они были активны во время рабочего дня. Проверить, чтобы уведомления на телефоне были включены.

Быть готовым в любой момент выходить на созвон (микрофон + наушники должны быть рабочими). Телефон перевести в «громкий режим», чтобы быстро отвечать на звонки.

Регистрация. Начало работы фиксируем сообщением, что сотрудник вышел на связь. Это может быть сообщение вроде «Всем привет. На месте, формирую план на день».

Согласовывать с утра план дня и отписать его своему менеджеру в мессенджер-сообщении.

После выполнения задачи добавить скрин о готовности в WS, фразу «Готово» и фиксировать затраченное время.

Заполнять отчет о результатах работы в конце дня, а также еженедельный отчет об успехах. Отчет не должен быть длинным, должен содержать такие пункты, как старт и окончание работы, задачи, которые сотрудник решал, промежуточные результаты, план на следующий день.
******************

Наш отдел продаж работает с AMO CRM, и мы ввели правило писать ежедневно в 9:30 свой план на день в этой системе.

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

Перевели ежедневные созвоны (15-минутки по наведению резкости) в онлайн-режим.

Если же задачи посложнее, например, обсудить важные изменения, придумать решение сложной проблемы или провести ретроспективу по проекту – здесь нужно больше времени (40-60 минут).

Обязательно присутствовать на встрече с включенными камерами

По итогам проведенной встречи обязательно писать сообщение об итогах.

Важно держать связь сотрудника с компанией, транслировать ценности и строить корпоративную культуру, пусть и удаленно.

mc.today
Zawullon
программирование слоупок hackerrank Перед новым годом зарегался на hackerrank.com (для вакансии надо было там тест на базовые знания пройти) — задачки на кодинг. Внезапно оказалось очень интересно. Хотя задачки уровня easy — не особо, но вот с medium уже интересно. Особо доставляют high и advanced уровни сложности — для написания 15 строчек кода приходится ломать голову от нескольких часов до полутора дней. Оказалось, что у меня в голове была куча знаний, почти позабытых, и я даже не помню, откуда они там взялись.
Linda-chan
программизм Три часа упражнялась писать на ассемблере COM файлы, компилировать их, все дела. А потом выяснила, что DOS stub – это EXE файл, а не COM =_= И откуда я это взяла?