← All posts tagged погроммирование

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

анализ и написание сценариев для web scraping в связке с REPL — одно удовольствие!
— продумываю уменьшение нагрузки на целевой ресурс, чтобы не засылать туда 400K запросов.
— нужен ещё один сценарий для сбора метаданных.
— нужно понять, что не так со скроллингом, он, как бы это сказать, проскальзывает. возможно, и существующие сценарии для фантома с заглушками есть шанс реанимировать. проблема с ним воспроизвелась и локально. имея на руках REPL+браузер + любимый хаскелль, в которых можно производить отладку сценариев наглядно, без JS, видеть живую страницу в любой момент времени.

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

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

что ж, посмотрим.. что-то сломалось в управляемом скроллинге фантома через JS.. все попытки его отладить не приводят к успеху. из коробки в режиме webdriver он не работает. собираю из исходников, чтобы захачить ghostdriver.

мы продолбали третий майлстоун, но при этом выдержали четвертый. подоспели результаты стресс-тестов, время — условно ок, ЦПУ — жрём как не в себя. что ж, теперь у нас есть рабочая фича, удовлетворяющая требованиям бизнеса и долбаных 30 штук кейсов, которые она проходит.

скоро соберемся обсуждать, надо ли её переписать ещё раз так, чтобы она укладывалась в N мс и потребляла ЦПУ в меру.. команда резко демотивировалась, переписывать в третий раз фичу — больно. а коллеги из бывшей английской колонии нас побаиваются.

интересно, а сеньор-программист должен уметь разобраться, что такое "port forwarding"? вот такой чувак пришёл на мою замену на следующую фазу проекта. ему надо всего-то пробросить порты через туннель, чтобы можно было с помощью SSMS или sqlcmd достучаться к базе данных в другой сети. не знаешь — гуглится это на раз. ну ёлки, можно пару часов потратить повтыкать, поиграться, поразбираться...

нет, эта непостижимая задача удерживает его уже два дня от цели. два дня прошло, и мне кажется, что ещё неделя может пройти перед тем, как до него дойдёт. кроме винды он ничего не видел. а ещё сеньор.

и у меня нет никаких обязательств перед ним, со старого проекта официального запроса не было.
кто я после этого? — красноглазый ублюдок!

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

Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot modify readonly property: constructor.

— Сегодня мы продолбали аж целых 2 майлстоуна (из 4).
— И теперь мы заняли лавры первенства косячников года, оставив коллег из Индии далеко позади.

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

в общем, недолго думая, я принёс тем из вас, кто часто путешествует, тулу для упрощения подсчёта оставшихся или доступных в будущем дней по визе/нерезиденству/безвизу с ограничениями (X за Y).

an-pro.org

Самое простое.
— Шенгенская виза: 30 дней в течение 90.
— Эквадорский безвиз: 90 дней за 180.
— Нерезиденство: 183 за 365 дней.

Чистый клиент, родного общения с сервером лишён by design, из запросов во внешний мир — лишь аналитика от гугла. В первый раз долго грузицца, я знаю и работаю над тем, чтобы pulp browserify взлетел. Ну и плашки всякие, да, они тоже скоро появятся.

#2905635 тут хотелось очень странного + код писался бессонной ночью. в результате пришлось переписать его с третьей попытки с рекурсивным обсчётом, получилось o(n^2 — n + n), т.е. o(n^2). да и хрен с ним. оптимизировать лениво уже. на после релиза отложу. если тест выстрелит.

Плохо, когда правила 1hpd (hours per day) да даже 15 mpd (minutes per day) не работают. Всегда какая-нибудь хрень да выбьет из колеи. Ещё плохо, когда одновременно несколько проектов. Пропускная способность воспринимать информацию и производить value падает. И в какой-то момент хобби-проекту наступает двухнедельная дыра простоя. Восстановление потом — мама не горюй. Работает код — не трогай. Не работает — трассу подавай! Сижу уже пару часов и смотрю, почему алгоритм хождения по датам туда-сюда не работает.

ответ на #2907187

1. бессонная прошедшая неделя (ну т.е. я лукавлю в этот самый момент.. когда всё-таки спишь, но не более 2-5 часов в день и засыпаешь после рассвета — это не бессонница..) привела к срыву после возвращения из нуар-сити.
2. продрых 40+ часов за период с вечера пятницы по утро понедельника.
3. естественно, был недоступен по работе в этот период из 2.
4. успел потеряться и словить эскалацию. :)
5. сегодня мимоходом удалось по крупицам разрешить недостающие вопросы от своего падавана.
6. коллеги раскачиваются, респект им.
7. выдали вторую ревизию фичи и словили новую пачку требований в ответ.
8. выкатил ребятам в ответ, мол, давайте уже ВСЕ требования, мы тут какой-то хернёй занимаемся иначе.
9. тут проблема уже сместилась от предметной области к области формирования требований: если мы будем моделировать то, чего нет, то насколько далеко нам надо зайти в этом моделировании.. :)

ответ на #2906666

1. теперь мы знаем, что делают наши изменения в коде.
2. мы знаем, как протестировать наши изменения.
3. но мы не уверены в корректности требований, по которым эти изменения внесены.
4. да пофигу на незнание джавы, умеешь рисовать картинки и писать алгоритмы, а код — это хрень, разве лишь много его.
5. новые требования сводят на нет всю стабилизацию, это нормально.
6. эмулятор хорошо, но нужно подавать ему на вход корректные наборы данных, которые диктуются требованиями, см. пункт 2.
7. хорошую вещь Ignite (en. "воспламенение") не назовут. вот и тушим пожары.
8. я в нуар-сити, надо выбрать соответствующие фотки..

1. мы не знаем, что делают наши изменения в коде.
2. мы не знаем, как их протестировать.
3. но начинаем догадываться.
4. мы не знаем джавы.
5. и это не помешало нам отбить эскалацию. и стабилизировать решение.
6. мы получили 3 разных эмулятора запросов в нашу сторону, выбрали лучший, который успешно стучится на прокси, но пункт 2 и пункт 3.
7. игнайт — сыроватая вещь.. Кассандра — ещё более, т.к. 8 и 9.
8. WHERE ... IN ('x'); — OK
9. WHERE ... IN ('x','y'); — not implemented yet, LOL

1. на новом проекте без джавы никак.
2. проект для меня и команды начался сразу с пожара, огонь которого успели развести коллеги из Индии.
3. интенсивность поступающей информации велика и меняющихся требований велика.
4. налицо нежелание коллег передавать нам знания.
5. начальство требует от нас патчей сразу, не беря в расчет время на погружение и адаптации к существующим процессам (их можно считать нет).
6. за время между митингами ничего не успеть написать на джаве, т.к. писать надо много. фрустрирую. прототипировать тоже некогда..
7. брать работу на дом нельзя, иначе потом случаются инциденты со светофорами или бессонные ночи.

кажется, пора что-то менять..

когда начинаешь погружаться в апачевский инкубатор, становится трудно остановиться. сначала Cassandra, потом Kafka, может быть, Spark.. через какое-то время думаешь, Ignite или Hazelcast.. отдельно доставляет приходить на совещания, на которых англичане бьют палками индусов, сразу перед глазами начинают мелькать картинки из прошлого, которое я не мог видеть..