• Как запомнить учебник по JavaScript за 5 дней, или «Дворец Памяти» в повседневной жизни программиста

    image

    Захожу на кухню, а на столе сидит маленький гномик и вертит в руках перочинный нож. Я что-то говорю гномику, он недовольно сплевывает вбок, нехотя поднимается и отрезает кусок от огромной сосиски, которая лежит на столе. Так я запомнил метод массива splice. Главная идея «Дворца Памяти» — придумать образ, который просто невозможно забыть, и прикрепить его в воображении к реальному месту, которое хорошо знаешь.
    Читать дальше →
  • [лонгрид] 20 лет программистской карьеры в большом маленьком городе

      We do what we must because we can — GLaDOS

      Ижевск, наши дни


      Первого февраля исполняется ровно два десятилетия, как я начал официально подвизаться в должности инженера-программиста:

      Фото первого разворота трудовой книжки с датой 1 февраля 1999 года

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

      Конечно, мерило «успешности» у каждого своё, но моим служит тот факт, что последние 15 лет я работаю на сеньорских должностях на проектах, в основном завязанных на крупных корпоративных или зарубежных заказчиках, и почти каждая новая работа находит меня сама. И всё ещё не устал.

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

      Но вы ведь любите автобиографии с аутистическими шутками, не правда ли?
      Потратить целый вечер
    • 42 оператора расширенного поиска Google (полный список)

      • Translation
      • Tutorial
      Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

      Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

      В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
      Читать дальше →
    • Ликбез по электротравмам: от ожогов и катаракты до переломов и фибрилляции

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


        Пост подготовлен совместно с dlinyj, который выступил в качестве рецензента и консультанта в вопросах физики электричества и охраны труда, а также соавтора раздела “Что убивает ток или напряжение?”. Под катом я подробно описал механизмы получения электротравмы, медицинские последствия, а также проанализировал несколько трагических случаев, связанных с необычными электротравмами. При подготовке материала использован мой собственный медицинский опыт, факты, известные из СМИ, а также доступную в сети литературу и документы (фото поражений, содержащиеся в статье, некоторые читатели могут счесть шокирующими и неприемлемыми).
        Предупреждение от модератора. Публикация содержит изображения частей тела травмированных людей, которые могут оказать влияние на психическое состояние чувствительных взрослых и детей.
        Читать дальше →
      • Как я дизайн монетизировал. 15 инсайтов о создании цифрового продукта, который продается


          Итоги года для UI дизайнера, у которого не было ни одного интересного проекта в портфолио и он решил создать свой собственный продукт для популярной теперь дизайн-платформы Figma.

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

          Я не работал в больших компаниях, не устраивал-дизайн спринты и не сидел бок о бок с крутыми парнями в коворкингах. Я в дизайне уже не менее 16 лет, я самоучка, и однажды у меня не оказалось ни одного интересного проекта в портфолио, который бы круто работал и современно выглядел. Все мои последние годы стабильного фриланса — это клиенты с обычными заказами. Они приходят и уходят. И 80% из них позднее выбрасывают в топку всё ваше творчество. Потому что по законам рынка это число терпит неудачу после запуска проекта.
          Читать дальше →
          • +10
          • 5.7k
          • 7
        • Мозжечок и базальные ядра вместо хрустального шара: как мозг предсказывает будущее



            Сегодня мы с вами немного отойдем от рассмотрения исследований на базе нашей любимой физики/химии и переключим свое внимание на исследования человеческого организма. Точнее сказать на исследование мозга. Этот орган настолько сложен, что все предыдущие исследования давали один ответ и 10 новых вопросов, так сказать. Конкретнее говоря, сегодня мы рассмотрим исследование, намеренное ответить на вопрос — как мозг предсказывает будущее? И нет, мы не будем говорить о картах таро, кофейной гуще, астрологии и прочих ненаучных вещах. Мы будем говорить о том, как мозг человека, используя имеющиеся знания, выстраивание логических цепочек и анализ ситуации, способен предвидеть недалекое будущее. Исследователи уделили этому аспекту внимание не из праздного любопытства, а ради того, чтобы лучше понять процессы в мозге человека во время развития некоторых болезней, в том числе и болезни Паркинсона. Что именно узнали ученые, как они проводили эксперименты и что это может означать для медицины в будущем? Доклад поможет нам найти ответы на эти вопросы. Поехали.
            Читать дальше →
            • +13
            • 9.1k
            • 4
          • Производительность PHP: планируем, профилируем, оптимизируем



              Привет, Хабр! Два года назад мы писали о том, как перешли на PHP 7.0 и сэкономили миллион долларов. На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей.

              Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся и развиваем нашу функциональность, благодаря чему пользователи проводят в приложении всё больше времени. А это, в свою очередь, отражается на количестве запросов, которое за два года увеличилось в 2—2,5 раза.

              Мы оказались в ситуации, когда двукратный выигрыш в производительности нивелировался более чем двукратным ростом запросов, и мы опять стали приближаться к пределам нашего кластера. В ядре PHP снова ожидаются полезные оптимизации (JIT, предзагрузка), но они запланированы только на PHP 7.4, а эта версия выйдет не раньше, чем через год. Поэтому трюк с переходом сейчас повторить не удастся — нужно оптимизировать сам код приложения.

              Под катом я расскажу, как мы подходим к таким задачам, какими пользуемся инструментами, и приведу примеры оптимизаций, идей и подходов, которые мы применяем и которые помогли нам в своё время.
              Читать дальше →
            • Оформить ИП — единственный путь

              К каждой статье на Хабре, касающейся преимуществ или недостатков оформления ИТ-шника, как ИП, пишутся сотни комментариев сторонников и противников этой схемы. Такое ощущение, будто у рынка еще остался выбор. А я вот уверен, что с развитием удаленной работы, всякими agile-подходами и практиками, которые сложились при взаимодействии с удаленными командами, в ИТ просто нет иного пути. ИП — единственная форма взаимоотношений, которая соответствует реальности, а не с трудом на нее “натягивается” (если не рассматривать более «хитрые» случаи — ООО, ЗАО).

              image

              Карикатура «Без вариантов» Андрея Абрамова

              Под катом изложено исключительно мое ИМХО — опыт человека, более 15 лет отработавшего в России (с российскими заказчиками и работодателями) с самыми разными формами отношений.
              Читать дальше →
            • Как создать надёжную игровую механику в Excel. Часть 2

              • Translation

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

              Задачи о размещении объектов


              Электронные таблицы для этой части можно скачать здесь: (SuperTank) (телепорты, часть 1) (телепорты, часть 2)

              SuperTank: задача решена!


              В первой статье серии мы рассказали о примере задачи для игры под названием SuperTank. Во второй её части, мы познакомились с основными концепциями моделирования решений и я рассказал о решении простого примера с помощью инструмента «Поиск решений» в Excel.

              Теперь мы можем применить полученные во второй части знания к задаче SuperTank, и доказать, что с их помощью можно решить эту задачу легко и быстро. Освежу вашу память: SuperTank — это игра, в которой вы можете сражаться на настраиваемом танке.
              Читать дальше →
              • +27
              • 12.4k
              • 2
            • Вывод денег с Upwork-a. Сравнительный анализ

                image

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

                В статье описаны «легальные» варианты обналички, без создания зарубежных фирм и счетов.
                Читать дальше →
              • Каждый, кто был на Хабре больше одного раза, знает о наших сервисах для профессионалов — Мой круг и Фрилансим. Первый помогает найти друг друга потенциальным работодателям и соискателям вакансий, второй — фрилансерам и заказчикам. Часто с помощью этих сервисов иностранный работодатель или заказчик ищет специалистов в России — порядка 30% пользователей Моего Круга и Фрилансим не из нашей страны. И неудивительно — российские айтишники востребованы за рубежом, и гонорары им переводят неплохие, в валюте. А вот как легализовать эти совершенно законно заработанные деньги — не всегда понятно даже тем, от кого профессия требует каждый день решать сложнейшие задачи. Как правильно оформить валютные платежи и какие налоги при этом заплатить — помогают разобраться эксперты банка Точка.
                Подробности — под катом
              • Список здорового IT'шника, или как не угробить свою жизнь

                  Дело было вечером, делать было нечего, а спина все болела. И написал я на Хабре. И разверзлись хабровчане в комментариях и поведали мне, что у кого болит и как с этим справляться.

                  Серьезно, я не ожидал, насколько тема в прямом смысле болит, сколько людей откликнулись и поблагодарили, но самое важное, насколько осознана аудитория Хабра! Все это побудило меня уйти в тему с головой.

                  image

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

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

                  Эми Кадди провела двухминутный эксперимент — Оказалось, даже за это короткое время уровень тестостерона у тех, кто был в правильной позе, повысился на 20 %, а у тех, кто нет — снизился на 20 %. Уровень кортизола тоже существенно отличался: у первых упал на 25 %, а у вторых вырос на 15 %.

                  Под катом я рассказываю и показываю и навожу ясности в этой теме. И главное вы сможете ответить себе на вопрос: «Что делать-то, конкретно?»
                  Читать дальше →
                • Что скрывает PDF

                  • Translation


                  В файлах PDF много информации. Бóльшая часть используется для одинаковой визуализации документа на разных платформах. Но также есть множество метаданных: дата и время создания и редактирования, какое приложение было использовано, тема документа, название, автор и многое другое. Это стандартный набор метаданных, а имеются способы вставить в PDF пользовательские метаданные: скрытые комментарии в середине файла. В данной статье мы представим некоторые формы метаданных и покажем, где их искать.
                  Читать дальше →
                • Безопасность Microsoft Office: встраиваемые объекты



                    Изначально архитектура Microsoft Office строилась на основе концепции составных документов, они же документы OLE, активно продвигаемой Microsoft на заре 32-разрядных Windows. В те времена идея «бесшовного» объединения в одном документе данных самых разных форматов казалась заманчивой и увлекательной, и до выявления первых проблем успела прочно врасти во многие масштабные продукты.

                    «Плохая новость» заключалась в том, что универсальный способ добавления в документы данных (и кода обработки этих данных) стал универсальным путем появления в продукте уязвимостей, который и сегодня постоянно преподносит приятные сюрпризы создателям malware исследователям безопасности.
                    Читать дальше →
                  • Алгоритм: Как найти следующую лексикографическую перестановку

                      image

                      Если кратко описать, что такое лексикографический порядок — это сортировка в алфавитном порядке. Т.е. последовательность символов — AAA → AAB → AAC → AAD → ……… → WWW — является отсортированной в алфавитном (или в нашем случае лексикографическом) порядке.

                      Представьте, что у Вас есть конечная последовательность символов, например 0, 1, 2, 5, 3, 3, 0 и Вам необходимо найти все возможные перестановки этих символов. Наиболее интуитивным, но и наибольшим по сложности, является рекурсивный алгоритм, когда мы выбираем первый символ из последовательности, далее рекурсивно выбираем второй, третий итд, до тех пор, пока все символы из последовательности не будет выбраны. Понятно, что сложность такого алгоритма — O(n!).

                      Но оказывается, что наиболее простой алгоритм генерации всех перестановок в лексикографическом порядке — это начать с наименьшей и многократно вычислять следующую перестановку на месте. Давайте посмотрим как это сделать.
                      Читать дальше →
                    • PHP Excel Templator (PHP-шаблонизатор для Excel) или как мы до этого писали хардкод для Excel

                      image

                      Думаю, что по скриншоту уже понятно, о чём идёт речь. Но, дабы не дублировать текст, который уже описан в документации, я расскажу только о важных моментах.
                      Читать дальше →
                    • 10 физических фактов, которые вы должны были узнать в школе, но, возможно, не узнали

                      • Translation
                      image

                      1. Энтропия измеряет не беспорядок, а вероятность


                      Идея о том, что энтропия – это мера беспорядка, совсем не помогает разобраться в вопросе. Допустим, я делаю тесто, для чего я разбиваю яйцо и выливаю его на муку. Затем добавляю сахар, масло, и смешиваю их до тех пор, пока тесто не становится однородным. Какое состояние является более упорядоченным – разбитое яйцо и масло на муке, или получившееся тесто?

                      Я бы сказала, что тесто. Но это состояние с большей энтропией. А если вы выберете вариант с яйцом на муке – как насчёт воды и масла? Энтропия выше, когда они разделены, или после того, как вы их яростно потрясёте, чтобы смешать? В данном примере энтропия выше у варианта с разделёнными веществами.

                      Энтропия определяется как количество “микросостояний”, дающих одно и то же “макросостояние”. В микросостояниях содержатся все детали по поводу отдельных составляющих системы. Макросостояние же характеризуется только общей информацией, вроде “разделено на два слоя” или “в среднем однородное”. У ингредиентов теста есть много разных состояний, и все они при смешивании превратятся в тесто, однако очень мало состояний сможет при смешивании разделиться на яйца и муку. Поэтому, у теста энтропия выше. То же работает для примера с водой и маслом. Их легче разделить, тяжелее смешать, поэтому у разделённого варианта энтропия выше.
                      Читать дальше →
                    • Как украсть деньги с бесконтактной карты и Apple Pay

                        Как украсть деньги с бесконтактной карты из кармана? Насколько безопасен PayPass и Apple Pay?

                        В статье разбираются популярные мифы и сценарии мошенничества с бесконтактными системами оплаты на примере настоящего POS-терминала, карт PayPass/payWave и телефонов с функцией Google Pay/Apple Pay.

                        Рассматриваемые темы:

                        • Можно ли НА САМОМ ДЕЛЕ украсть деньги, прислонившись POS-терминалом к карману? — мы попытаемся полностью воспроизвести этот сценарий мошенничества от начала до конца, с использованием настоящего POS-терминала и платежных карт в реальных условиях.
                        • В чем разница между физическими и виртуальными картами Apple Pay? — как происходит связывание физической карты и токена Apple Pay, и почему Apple Pay во много раз безопаснее обычной карты.
                        • Используем аппаратный NFC-сниффер (ISO 14443A) — воспользуемся устройством HydraNFC для перехвата данных между POS-терминалом и картой. Рассмотрим, какие конфиденциальные данные можно извлечь из перехваченного трафика.
                        • Разбираем протокол EMV — какими данными обменивается карта с POS-терминалом, используемый формат запросов, механизмы защиты от мошенничества и replay-атак.
                        • Исследуем операции без карты (CNP, MO/TO) — в каких случаях на самом деле(!) можно украсть деньги с карты, имея только реквизиты, считанные бесконтактно, а в каких нельзя.

                        Внимание!

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

                        Материалы в статье представлены исключительно в ознакомительных целях. Все сцены демонстрации мошенничества инсценированы и выполнены с согласия участвующих в них лиц. Все списанные деньги с карт были возвращены их владельцам. Воровство денег с карт является уголовным преступлением и преследуется по закону.
                        Читать дальше →
                      • Добавление водяного знака на все картинки сайта

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


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

                        Читать дальше →