Pull to refresh
17
0
Евгений @JRazor

Python программист

Send message
Просто оцени правильно время заранее
— Слушай, ты разработчик. Ответь, почему разработчики всегда неправильно оценивают время на создание программ?
— Представь что тебе надо разгрузить машину, сколько времени это займет?
— Пару часов
— Это камаз
— 8 часов
— Камаз, груженый песком
— 12 часов
— У тебя нет лопаты и инструментов, только твои руки
— 2 дня
— На улице -40
— 4 дня
— Камаз вообще под водой
— Так же нечестно, ты постоянно придумываешь новые условия! К чему ты мне вообще все это рассказываешь? Вы, разработчики, вечно всякую фигню рассказываете! Вместо этого могли бы просто оценить правильное время на разработку.
Xiaomi Mijia Cleargrass Air Detector — ~8k
CO2 + PM2.5 + tVOC + влажность, еще и показания можно снимать через python-miio и например самому делать графики/алерты/любую кастомную логику: image
Вам только деньги нужны

На все подобные вопросы отвечаю прямо — да, вы тут не ракеты в космос запускаете и не лекарство от рака ищете, поэтому работаю я здесь исключительно ради денег.
Если подытожить:
— Почему разработчики так много получают?
— За трудную работу: работа ведь гораздо сложнее, когда ты не знаешь, что и как делаешь

Есть потрясающая опция git config --global pull.ff only — пулл делает только fast-forward и фейлится, если он этого не может сделать. Это избавляет от необходимости контролировать каждый fetch+merge и при этом защищает от пулла не в ту ветку.

Наиболее простое решение — взять и закоммитить всё с комментарием WIP (распространённая аббревиатура от «Work In Progress»).

Этот подход настолько понравился нашей команд, что завели даже отдельные алиасы для git:

[alias]
  wip="!git add . && git commit -m 'WIP'"
  rewip="reset --soft HEAD^"

Очень удобно делать
git wip
git checkout <another branch>
...do something here...
git checkout -
git rewip

Два принципа спокойной работы:
— не будь мудаком
— не работай с мудаками
Спасибо за статью. Имхо, все эти упрощающее запоминание закономерности выявляются и в зубрежке, хотя будет дольше.
Дабы повысить скорость чтения, год гоняю challenge mode здесь с рандомными ключами. ~65 нот в минуту, будет за 100 — начну интервалы дрючить. А по ним у вас есть какие-нибудь хаки?

Борода:

В начале 1980-х годов сеть ресторанов быстрого питания A&W запустила масштабную рекламную кампанию своего гамбургера. В отличие от похожего сэндвича в 1/4 фунта из McDonald's, гамбургер A&W весил 1/3 фунта и стоил чуть дешевле, а покупатели говорили, что он вкуснее. Несмотря на всё это, кампания провалилась. Позже A&W провела исследование и выявила причину: многие клиенты не понимали истинного значения дробных чисел. Предложение казалось им невыгодным, так как 3 меньше 4.
1. Разность между двумя часовыми поясами будет оставаться постоянной.
Подвижки часовых поясов в России за последние годы
2. Хорошо, отставляя в сторону исторические курьёзы, разность между двумя часовыми поясами не изменится в будущем.
И они еще могут быть
3. Изменение разности между часовыми поясами будет происходить с выдачей множества предварительных оповещений.
Мне кажется, в примерах не нуждается. И так понятно, что — всяко бывает.
4. Переход на летнее время происходит каждый год в одно и то же время.
СССР переводился, вроде, с воскресенья на понедельник. Сейчас — на выходных.
5. Переход на летнее время происходит в каждом часовом поясе в одно и то же время.
Аналогично.
6. При переходе на летнее время всегда происходит сдвиг на один час.
Недавний перевод часов в России — часть областей уехала на иное количество часов.
7. Количество дней в месяце составляет 28, 29, 30 или 31.
1582 год. У католиков в октябре после 4-го числа сразу настало 15-е.
8. День месяца всегда изменяется последовательно с N на N+1 или на 1 без какого-либо разрыва.
См. предыдущий пункт
9. В каждый момент времени используется только одна календарная система.
Мусульмане и ряд восточных стран одновременно могут пользоваться несколькими календарями.
10. Високосный год имеет место в каждый год, который делится на 4.
1900-й и 2100-й года — невисокосные.
11. Невисокосный год никогда не имеет 29 февраля.
С этим сложности. Я не знаю контрпримеров.
12. Легко сосчитать количество часов и минут, прошедших с какого-то определённого момента времени.
Взять, например, переход Швеции на григорианский календарь. Там мозг сломать можно уже на описании — даже не расчете…
13. Один и тот же месяц содержит одно и то же число дней везде!
Переход на григорианский был различен в разных странах.
14. Время в Unix измеряется только в секундах.
Видимо, имеется в виду, что «реальное» время во время добавления високосной секунды составляет две секунды, когда в Unix фиксируется только одна секунда (соответственно, это может быть чревато для промобъектов, вычисления скорости и так далее).
15. Время в Unix представляет собой количество секунд, начиная с 01 января 1970 года.
Високосные секунды отбрасываются.
16. Субботе всегда предшествует пятница.
Переход через линию перемены дат (ЛПД) в полночь позволит попасть в субботу из четверга. Ну или из субботы.
17. Соседние часовые пояса различаются не более чем на один час (другими словами: мы не должны проверять, что происходит с авиационной электроникой при пролёте над линией перемены даты).
ЛПД
18. Два разных часовых пояса различаются на целое число получасовок.
Непал и Индия. Отличие — 15 минут.
19. Ладно, на целое число четвертей часа.
Не знаю контрпримера
20. Ладно, на секунды, но это будет существенная разница, если мы не учитываем переход на летнее время.
Не знаю контрпримера
21. Если вы создаёте два объекта даты прямо рядом друг с другом, то они будут представлять одно и то же время (фантастический генератор Гейзенберга).
Не понял сути.
22. Можно подождать, когда часы покажут точно ЧЧ: ММ: СС с дискретизацией один раз в секунду.
При високосной секунде часы могут не показать 23:59:60
23. Если процесс идёт «n» секунд, а затем завершается, то приблизительно «n» секунд прошло на системных часах к моменту завершения.
Високосная секунда.
Или в момент перевода часов.
24. Неделя начинается в понедельник.
США — в воскресенье.
25. День начинается утром.
Не знаю контрпримеров.
26. Праздники занимают целое число полных суток.
Не знаю контрпримеров.
27. Выходные дни состоят из субботы и воскресенья.
Переносы выходных дней из-за праздников.
28. Можно установить общий порядок формирования временных меток, который будет полезен за пределами вашей системы.
Не понял сути.
29. Смещение местного времени (относительно универсального синхронизированного времени (UTC)) не изменится в течение рабочего дня.
Перенос часовых поясов круглосуточного производства.
30. Thread.sleep(1000) приостанавливает выполнение на 1000 миллисекунд.
Високосная секунда.
31. Thread.sleep(1000) приостанавливает выполнение на время >= 1000 миллисекунд.
Не знаю контрпримера.
32. Каждая минута содержит 60 секунд.
Високосная секунда
33. Метки времени всегда продвигаются монотонно.
Високосная секунда
34. Среднее время по Гринвичу (GMT) и универсальное синхронизированное время (UTC) представляют один и тот же часовой пояс.
Не знаю контрпримера
35. Великобритания использует среднее время по Гринвичу (GMT).
Перешли на UTC по причине неравномерности GMT из-за неравномерности вращения Земли.
36. Время всегда идёт вперёд.
Физически — не знаю контрпримера. Но местное при пересечении ЛПД может идти и вспять…
37. Разность между текущим моментом времени и моментом времени, отстоящим на одну неделю, всегда равна 7 * 86400 секунд.
Високосная секунда
38. Разность двух меток времени является точной мерой времени, прошедшего между ними.
Високосная секунда
39. 24:12:34 — неправильное время.
Не знаю контрпримера.
40. Каждое целое число теоретически может означать год.
Не понял смысла фразы.
Может, имеется в виду, что минус триллион не имеет смысла в нашей Вселенной?
Нулевой год используется астрономами.
41. При выводе на дисплей даты и времени показываемое время имеет ту же самую вторую часть, что и время, хранимое в памяти.
Не понял, что есть вторая часть. Возможно, имеется в виду сегмент секунд или их доли?
42. Или тот же год.
На время отрисовки (ненулевое) может прийтись новый год.
43. Но, по крайней мере, разность между показываемым и хранимым годом не превышает 2.
Не знаю контрпримеров.
44. Если данные находятся в правильном формате ГГГГ-ММ-ДД, то год содержит четыре цифры.
382-12-01 — первое декабря 382-го года, очевидно, либо должно иметь фильтр на ввод, требующий вбивать 0382, либо обрабатывать и такие варианты.
45. Если происходит слияние двух дат путём заимствования месяца из первой, а дня и/или года — из второй, то дата получается правильной.
Сливаем 20 февраля и 31 января. 31 февраля, мне кажется, еще не случалось.
46. Но это будет работать, только если оба года — високосные.
Аналогично.
47. Если взять опубликованный алгоритм, описанный спецификацией W3C, для добавления некоторой продолжительности к датам, то он будет работать во всех случаях.
Не знаю контрпримера.
48. Стандартная библиотека поддерживает отрицательные годы и годы, превышающие 10000.
Не готов прокомментировать.
49. Часовые пояса всегда различаются на целый час.
Непал-Индия.
50. При преобразовании метки времени, имеющей точность в миллисекундах, во время, имеющее точность в секундах, можно спокойно не учитывать составляющие в миллисекундах.
Не готов комментировать.
51. Можно не учитывать составляющую в миллисекундах, если она менее 0,5.
Не готов комментировать.
52. Год, представленный в виде двух цифр, должен быть в диапазоне 1900-2099.
А может и не быть. И как трактовать 42? Это 1942 или 2042?
53. При синтаксическом анализе времени, даты можно читать числа последовательно (символ за символом) без необходимости возвращаться назад.
Не готов комментировать.
54. При распечатке времени, даты можно писать числа последовательно (символ за символом) без необходимости возвращаться назад.
Не готов комментировать.
55. У вас никогда не будет необходимости выполнять синтаксический анализ примерно такого формата ---12Z или P12Y34M56DT78H90M12.345S.
Не готов комментировать.
56. Имеется только 24 часовых пояса.
Больше. Даже если не учитывать получасовые и четвертьчасовые извращения, а также (не)переход на зимнее, часовых поясов есть от -12:00 до +14:00.
57. Часовые пояса всегда различаются на целое число часов относительно универсального синхронизированного времени (UTC).
Индия-Непал
58. Переход на летнее время везде начинается/заканчивается в один и тот же день.
Не знаю контрпримеров.
59. Переход на летнее время всегда представляет собой сдвиг на 1 час вперёд.
Подвижки поясов в России.
60. Считывание часов клиента и сравнение с UTC является хорошим способом определить часовой пояс клиента.
Не учитывает летнее-зимнее время, да к тому же клиент может иметь непереведенные часы (например, пребывать в командировке в другом часовом поясе).
61. Программно-реализованный стек будет / не будет пытаться автоматически настроиться на часовой пояс / переход на летнее время.
Не готов комментировать.
62. Моя программа используется только внутри предприятия / локально, поэтому мне не надо беспокоиться о часовых поясах.
Ну, если подвижки времени вообще ни на что не влияют, то в ряде очень отдельных случаев — возможно.
Но полагаться на это по умолчанию — не стоит.
63. Мой программно-реализованный стек будет обрабатывать это без необходимости какого-либо моего вмешательства.
Не готов комментировать.
64. Я могу легко сохранить список часовых поясов сам.
После чего опять произойдет нормотворческий зуд у какого-нибудь политика…
65. Все измерения времени на данных часах будут происходить в одной и той же системе отсчёта.
В сильно специальных условиях — возможно. Но надо проверять.
66. Тот факт, что основанная на дате функция сейчас работает, означает, что она будет работать при любой дате.
Даже на 2100-02-31?
67. Год содержит 365 или 366 дней.
Куча календарей, где это может быть не так. Мусульманский, например.
68. За каждой календарной датой располагается последовательно дальнейшая без пропуска.
Переход католиков на григорианский календарь.
69. Приведённая дата и/или показание часов однозначно идентифицируют уникальный момент времени.
Сильно зависит от контекста (см. переходы с юлианского на григорианский).
70. Високосные годы имеют место каждые 4 года.
После 2096-го високосным будет только 2104-й.
71. Зная область/район, можно определить их часовой пояс.
Новосибирск (до 1958-го года) располагался сразу в двух часовых поясах.
72. Зная населённый пункт, можно определить его часовой пояс.
Аналогично.
73. Время идёт с одинаковой скоростью на вершине горы и в самой нижней части долины.
Ну в общем — наверное, синхронизированные атомные часы могут показать разницу.
74. Один час равен следующему во всех системах отсчёта времени.
Високосная секунда.
75. Можно рассчитать, когда будут добавлены високосные секунды.
Не готов комментировать. Вообще этим занимается Международная служба вращения Земли. Есть ли у них надежный алгоритм расчета — не в курсе.
76. Точность типа данных, возвращаемых функцией getCurrentTime(), является той же, что и точность этой функции.
Не готов комментировать
77. Два последовательных вызова функции getCurrentTime() вернут различающиеся результаты.
Високосная секунда?
78. Второй из двух последовательных вызовов функции getCurrentTime() вернёт большее значение.
Високосная секунда?
79. Данное программное обеспечение никогда не будет работать на космическом корабле, облетающем чёрную дыру.
А вот это можно запихать в лицензионное соглашение!
По пункту «11) Катастрофы электронной переписки»

У нас в компании правило — писать про коллег/клиентов так чтобы если письмо попадет не тому кому нужно комфортно себя чувствовать.

Это часть более философского правила «говорить и думать о людях так, как если бы они присутствовали рядом и слышали нас».
К папе-банкиру подходит сын и спрашивает:
— Пап, вот смотри — деньги в твоём банке принадлежат другим людям — клиентам, вкладчикам и т. д. А как ты заработал на особняк, «Мерс» и яхту?
Папа отвечает:
— Сынок, в холодильнике кусок сала лежит, принеси его сюда.
Сын принёс.
— А теперь на место унеси.
Унёс. Возвращается и спрашивает:
— И что?
Папа:
— А пальцы-то жирненькие…
Пора вспомнить замечательную байку про математиков:
Трое математиков и трое физиков собираются ехать на поезде в другой город на конференцию. Они встречаются перед кассой на вокзале. Первой подходит очередь физиков и они, как все нормальные люди покупают по билету на человека. Математики же покупают один билет на всех. «Как же так?» — удивляются физики — «Ведь в поезде контроллер, вас же без билетов оттуда выгонят!». «Не волнуйтесь» — отвечают математики — «У нас есть МЕТОД».
Перед отправкой поезда физики рассаживаются по вагонам, но стараются проследить за применением загадочного «метода». Математики же все набиваются в один туалет. Когда контроллер подходит к туалету и стучит, дверь приотворяется, оттуда высовывается рука с билетом. Контроллер забирает билет и дальше все они без проблем едут в пункт назначения.
После конференции те же вновь встречаются на вокзале. Физики, воодушевившись примером математиков, покупают один билет. Математики не берут ни одного. — А что же вы покажете контроллеру? — У нас есть МЕТОД.
В поезде физики набиваются в один туалет, математики — в другой. Незадолго до отправления, один из математиков подходит к туалету, где прячутся физики. Стучит. Высовывается рука с билетом. Математик забирает билет и возвращается к коллегам.
МОРАЛЬ: Нельзя использовать математические методы не понимая их!
В аудитории лектор читает лекцию по математике трём студентам. Внезапно встает 5 человек и уходят. Лектор:
— Вот сейчас придут ещё двое, и вообще никого не останется.
избегание ловушек — это ходьба узкой дорожке, где слева — проблемы, а справа — пути их решения, доведенные до абсурда.

отлично сказано! можно я это где-то запишу и буду цитировать?
Делюсь хинтом по общению с родной миллицией и вообще любыми гос.конторами.
После первого вот этого «ой, мы так загружены, у нас столько дел, это надо сделать это....» говоришь «ок», разворачиваешься и уходишь. Приходишь домой и пишешь 4 письма.
Первое: тому же участковому, такое же заявление.
Второе: начальнику отделения, такое же заявление + «и участковый отказывается делать свою работу»
Третье: начальнику городского управления УМВД, такое же заявление + «участковый не хочет работать, начальник отделения уведомлён»
Четвёртое: в прокуратуру, всё вышеописанное + какое-нибудь размытое «прошу проконтролировать исполнение сотрудниками своих должностных обязанностей».

Все письма отправляешь в один день, заказной почтой.

Всё, начинаются презабавнейшие карусели, подковёрные игры, все скачут, звонят, пишут и дело идёт весьма бодро.
Способ полностью законный, мы нигде не соврали.
Пару раз видел продукты с гордой крупной надписью «ГОСТ 9001-2008» (или -2001, или -2011).

Если кто не в курсе — этот стандарт не описывает требования к продукции, а только к организации работы предприятия.
В конце прошлого года я решил обновить свой профайл на oDesk и столкнулся с проблемой прохождения тестов. Как было замечено в статье, влоб пройти тесты не так-то просто, так как большинстов вопросов либо устарело, либо относится к таким «закоулкам» технологий с которыми не сталкиваешся в повседневной работе или сталкиваешся очень редко. Как следствие рейт после прохождения тестов оказывается низким (если вообще тест удаётся пройти). Поэтому я собрался с силами и запилил небольшой сервис с тестами и вопросами которые можно встретить на oDesk. Идея сервиса заключается в том чтобы можно просмотреть вопросы и выбрать свои собственные ответы на них перед тем как проходить реальные тесты. Может кому-то этот сервис окажется полезным: odesk-tests.com

И ещё по тестам. Тут в комментариях упомянули про oSTEP. На самом деле тестов на этой платформе у oDesk уже доволно много. Но проблемы которые упомянались она не решает. Это просто обнавлённый UI для прохождения тестов.

А вот тест по PHP сделан очень прикольно. Там пока 3 вопроса и в каждом из них нужно написать небольшую функцию на PHP которую можно прямо в браузере же и отладить. На мой взгляд это более правильный подход проверки знаний чем тесты (хотя и его можно очень просто обойти при желании).

У Elance кстати тоже есть аналог oSTEP только сделан он более продуманно. Во первых, в начале спрашивают контрольный вопрос. Ответив на который можно перейти к остальным вопросам. Это ИМХО позволяет примерно оценить уровень теста ещё не начав его. И во вторых: после ответа на вопрос показывается правильно ты ответил или нет. То есть в отличии от oDesk можно учесть свои ошибки и исправить их в будущем.

===

Кстати раз уж речь зашла о тестах. Есть ли кто-нибудь с freelancer.com Насколько я знаю там тесты сделаны платными. Есть ли какой-то профит от этого решения? И каково качество самих этих тестов?
Вроде все собрал, хотя мог что-нибудь и не заметить :)

Русскоязычные:
codeforces.ru
acm.timus.ru
russiancodecup.ru/tasks — примеры задач с Russian Code Cup

Англоязычные:
www.topcoder.com — no comments :)
uva.onlinejudge.org — знаменитый сайт по онлайн-контестам
www.puzzleup.com — проект похожий на «Проект Эйлер»
www.hackerrank.com — также похож на «Проект Эйлер»
www.careercup.com — тут даны примеры задач с интервью, но, в целом, подойдет, чтобы размять мозг
www.geeksforgeeks.org — похож на предыдущий
learn.hackerearth.com — также есть примеры интервью с задачами, плюс где-то в Resources есть задачки
www.interviewstreet.com/recruit2 — челленджи. Минус сайта — он платный, но есть trial-период
codercareer.blogspot.ru — примеры задач
www.shyamsundergupta.com/canyoufind.htm — задачи на стыке математики и программирования
www.primepuzzles.net — аналогично предыдущему
www.azspcs.net — оптимизационные задачи комбинаторного хар
Если ещё наглядный пример для любителей статистики. Возможно, фактологически неточно, но сути это не меняет. Итак, во время Первой Мировой войны английские(?) военные озаботились тем, что большое количество солдат попадало в госпиталь с ранениями головы. Нехорошо, надо бы уменьшить. Решено было заменить кепи на каски. Стали ждать результата. Он проявился достаточно быстро: количество солдат с ранениями головы увеличилось. Как? Что? Почему??

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

Information

Rating
Does not participate
Date of birth
Registered
Activity