Pull to refresh
102
0.4
Роман Смирнов @Source

Head of Elixir at Ecom.tech

Send message

Уроки украинского

Reading time7 min
Views116K
Не бросайте чтение, будет не про политику. Язык, как он есть. Краткие заметки для быстрого начала понимания украинского, ну и в конце немного программирования, чтобы уж не совсем оффтоп.

Несколько замечательных особенностей украинского языка.

1. Звательный падеж.

Эта милая сердцу категория была в общем прародителе всех славянских языков, но сейчас осталась рудиментарно. Хотя она и понятна носителю современного русского, возьмите обращение «Друже!». Звательный падеж знаком нам из Библии («Отче наш!», «Врачу, исцелися сам!»), что неудивительно, так как церковнославянский — солунский диалект староболгарского.
Примеры:
Читать дальше →

Как мы спасали код-ревью

Reading time9 min
Views17K


Я ведущий Java-разработчик в Яндекс.Деньгах.


Каждое рабочее утро в 2018 году меня встречали около 30 пулл-реквестов, ожидающих ревью, а у меня не хватало времени разобрать их все за день. В конце лета я ушел в отпуск, а когда вернулся, обнаружил очередь из 50 PR, назначенных на меня. Разгребать их не было никакого желания, а ведь это была лишь вершина айсберга, которую я видел своими глазами. В тот день я и решил, что пора что-то изменить.


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

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

Auto-Renewable Subscription в iOS: правильная реализация и подводные камни

Reading time6 min
Views30K
Auto-Renewable Subscription, наверное, самый сложный из всех типов In-App Purchase в iOS, и реализовать его правильно, от начала и до конца, совсем непросто, и даже пройдя этот нелегкий путь, вы можете столкнуться с отказом цензоров принимать ваше приложение.

В данном посте я постараюсь провести вас через все этапы внедрения подписки и, возможно, смогу отговорить вас от этой идеи.
Читать дальше →

«Как перестать гореть», или о проблемах входящего потока информации современного человека

Reading time12 min
Views52K


В 20-м веке жизнь и работа людей шли по плану. На работе (упрощая — можно представить завод) у людей имелся четкий план на неделю, на месяц, на год вперед. Упрощая: тебе надо выпилить 20 деталей. Никто не придет и не скажет, что деталей теперь надо выпилить 37, а кроме того, написать статью с размышлениями о том, почему форма этих деталей именно такая — и желательно вчера.

В обыденной жизнь людей было примерно так же: форс-мажор был реальным форс-мажором. Нет сотовых телефонов, тебе не может позвонить друг и попросить «срочно приехать помочь решить проблему», ты живешь на одном месте практически всю жизнь («переезд как пожар»), а помочь родителям вообще думал «приехать в декабре на неделю».

В этих условиях сформировался культурный код, где ты чувствуешь себя удовлетворенным, если выполнил все задачи. И это было реально. Невыполнение всех задач — отклонение от нормы.
Сейчас все иначе. Орудием труда стал интеллект, и в рабочих процессах необходимо его использовать в разных ипостасях. Современный менеджер (особенно топ-менеджер) проходит через десятки задач разного типа в течение дня. А главное — управлять количеством «входящих сообщений» человек не может. Новые задачи могут отменить старые, изменить их приоритет, изменить саму постановку старых задач. В этих условиях сформировать заранее план и потом его выполнять поэтапно практически невозможно. Ты не можешь на прилетевшую задачу «у нас срочный запрос от налоговой, надо ответить сегодня, иначе штраф» сказать «запланирую на следующую неделю».

Как с этим жить — чтобы оставалось время на жизнь вне работы? И можно ли применить какие-то рабочие алгоритмы менеджмента в повседневной, бытовой жизни? 3 месяца назад я кардинальным образом поменял всю систему постановки задач и контроля за ними. Хочу рассказать, как я к этому пришёл и что в итоге получилось. Пьеса будет в 2 частях: в первой — немножко про, если так можно выразиться, идеологию. А вторая — целиком про практику.
Читать дальше →

Изучаем Docker, часть 1: основы

Reading time6 min
Views713K
Технологии контейнеризации приложений нашли широкое применение в сферах разработки ПО и анализа данных. Эти технологии помогают сделать приложения более безопасными, облегчают их развёртывание и улучшают возможности по их масштабированию. Рост и развитие технологий контейнеризации можно считать одним из важнейших трендов современности.

Docker — это платформа, которая предназначена для разработки, развёртывания и запуска приложений в контейнерах. Слово «Docker» в последнее время стало чем-то вроде синонима слова «контейнеризация». И если вы ещё не пользуетесь Docker, но при этом работаете или собираетесь работать в сферах разработки приложений или анализа данных, то Docker — это то, с чем вы непременно встретитесь в будущем.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными

image

Если вы пока не знаете о том, что такое Docker, сейчас у вас есть шанс сделать первый шаг к пониманию этой платформы. А именно, освоив этот материал, вы разберётесь с основами Docker и попутно приготовите пиццу.
Читать дальше →

Обширный обзор собеседований по Python. Советы и подсказки

Reading time10 min
Views190K

Всем привет!


Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


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

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

Как общаться в англоязычном офисе: 14 полезных идиом

Reading time6 min
Views39K
image

На Хабре в последние годы публикуется довольно много статей о переезде, в том числе в США и Великобританию. Обычно в таких материалах рассказывают о поиске работы и визовых вопросах, но не так много внимания уделяется дальнейшей интеграции, в том числе в рабочий коллектив.

Команда сервиса Textly опубликовала в своем блоге подборку английских идиом, которые часто используются в офисных коммуникациях. Я решила подготовить перевод этого полезного материала
Читать дальше →

Программист на всю голову: как кодинг влияет на мышление

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



В преддверии нашего курса Go Workshop рассказываем, что психологи, лингвисты и педагоги думают о влиянии кодинга на мозг, при чем тут австралийские индейцы и гипотеза Сепира-Уорфа.
Читать дальше →

Как мы собрали 12-этажный стек технологий и не сошли с ума

Reading time8 min
Views7.1K
Appodeal — это компания из ~100 человек, которые работают в Москве, Сан-Франциско, Барнауле, Луцке, Кирове, Барселоне, а с июня 2018 года — еще и в Минске.

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

image

Для тех, кто еще не знаком с Ad Tech — это область работы технологичных компаний, которые работают в сфере рекламы. Когда рассказываешь кому-то, что ты работаешь в сфере мобильной рекламы, то люди часто реагируют скептически — видимо, на ум приходит надоедливая реклама «Азино три топора». На самом деле это лишь верхушка айсберга, и вся эта “дикая” реклама не имеет никакого отношения к настоящему рекламному бизнесу.
Читать дальше →

Комплект увольнения

Reading time13 min
Views76K
  • Знание ООП и структуры данных;
  • опыт разработки на Java для Android.;
  • знание Android API, понимание архитектуры Android;
  • знание основ HTTP, XML, JSON;
  • опыт работы с системами контроля версий Git;
  • опыт работы с Android Studio, Gradle;
  • опыт работы с SQL базами данных;
  • знакомство с принципами Material Design;

Узнали? Конечно, узнали. Это — одно из стандартных резюме программиста.

Лично мне такое резюме напоминает одну песню, а точнее одну строку этой песни: «Жигули! Едет и уже хорошо!».

Еще напоминает рекламу тех же Жигулей, где наличие ABS, датчиков дождя и света и т.д. выдается за конкурентное преимущество. Ну и лозунг знаменитый: «Таким и должен быть автомобиль!».

А программист таким и должен быть? Если хочет быть, как жигули – массовым, дешевым и «как бы и не машиной программистом», то да.

Но мы не такие, поэтому будем формировать и формулировать свое конкурентное преимущество – комплект увольнения.



Комплект увольнения – то, что остается с вами, когда вы меняете место работы. Как пел Юрий Шевчук, «Это то, что останется после меня. Это то, что возьму я с собой».
Читать дальше →

Паттерны и антипаттерны обоснования задач

Reading time19 min
Views26K

Содержание



Когда вы заводите задачу, ее нужно обосновать. Вы должны убедить разработчика, что:

  • это действительно баг;
  • его необходимо исправить;
  • его нужно исправить именно так, как мы сказали.

А то иногда читаешь баги (особенно баги новичков) и задаешься вопросом:

— Почему это баг??

Например, там написано: «Загружаем отчет, получаем 57,6. А должно быть — 57.9».



Если записать обоснование, это решит проблемы:

  • Коллеги отвлекают с вопросами «А почему это баг?», вырывая из контекста.
  • Спустя месяц ты сам забыл, а, собственно, почему это был баг…

См также:
Зачем нужно обоснование в баге — более подробно о том, зачем вообще обоснование.


Через меня прошли сотни начинающих тестировщиков (студентов). Вот как раз на их задачах я и начала задаваться вопросом «А почему это баг?»… Спрашиваешь ребят, а в ответ получаешь «Да это же очевидно!». Ну как-то не очень =))

Через кучу задач и вопросов «А почему?» стали вырисовываться паттерны ответов. Я выделила хорошие и плохие паттерны. О них и хочу рассказать.

Эта статья для:

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

1. Антипаттерны: плохое обоснование




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

Шаблоны проектирования с человеческим лицом

Reading time32 min
Views535K

image


Шаблоны проектирования — это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.


Как сказано в Википедии:


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

image Будьте осторожны


  • Шаблоны проектирования — не «серебряная пуля».
  • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
  • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

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

Любопытные извращения из мира ИТ

Reading time11 min
Views128K
Сайт The Daily WTF уже 14 лет собирает курьёзные, дикие и/или печальные истории из мира ИТ. Я перевёл несколько рассказов, показавшихся мне интересными. Все имена и названия компаний изменены.

На работу за 3 000 миль


Правдивая история из личного опыта нашего автора Snoofle. [Оригинал]

Много десятков лет назад оборонный подрядчик DefCon Inc работал на армию США и пытался получить новый контракт на создание какого-то приложения, применяемого в бою. Компания хотела продемонстрировать в своём предложении, что у неё хватит персонала для выполнения этого проекта. Поэтому она наняла более тысячи разнообразных программистов, руководителей проектов, менеджеров и так далее. Военные, изучавшие различные коммерческие предложения, увидели кучу новых сотрудников, абсолютно незнакомых с необходимыми процессами, процедурами и требованиями, поэтому передали контракт другой фирме. Подрядчик, со своей стороны, уволил всю эту тысячу человек.

Спустя несколько месяцев возник ещё один подобный контракт. Компания снова наняла тысячу человек, чтобы показать, что у неё есть персонал. Ещё через несколько месяцев контракт снова был передан другому подрядчику, и компания снова уволила всю тысячу.

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

Трудоголизм — болезненное состояние, о котором не принято говорить

Reading time5 min
Views42K
Тему профессионального выгорания не пинал на Хабре только ленивый. Были истории и о том, как с этим бороться, и рассказы людей, которые лично столкнулись с этой проблемой, и статьи вида «как избежать выгорания». На самом деле тема важная и нужная. Для многих разработчиков их профессия выливается не только в способ заработка, но и в личные увлечения. Люди получают реальное удовольствие от того, что они делают, а выходя вечером из офиса возвращаются домой и ковыряют собственные pet-projects.

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



Трудоголизм принято хвалить, но это монстр


Я не просто так упомянул профессиональное выгорание. Все мы знаем его основные признаки: отвращение к работе, снижение концентрации, апатия. Короче, человек становится скучным, вялым и ему ничего не надо от жизни. К клавиатуре подходит неохотно и только от очень большой нужды. Говорить о каком-то удовлетворении от своей деятельности вовсе не приходится. И всех это очень и очень сильно пугает, потому что в IT-кругах большинству людей на самом деле нравится то, что они делают.
Читать дальше →

Aрифметика произвольной точности в Erlang

Reading time7 min
Views5.8K


@rawpixel


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


Если говорить про Erlang, то он, как и многие другие языки, реализует IEEE754 стандарт для float, в то время как стандартный тип Integer в Erlang реализован с использованием арифметики произвольной точности. Однако, хотелось бы иметь не только bigint, но и возможность оперирования рациональными, комплексными и числами с плавающей точкой с необходимой точностью.


В статье представлен минимальный обзор теории кодирования чисел с плавающей точкой и наиболее яркие примеры возникающих эффектов. Решение, обеспечивающее необходимую точность операций через переход в представление с фиксированной точкой, оформлено в виде библиотеки EAPA (Erlang Arbitrary Precision Arithmetic), призванной удовлетворить потребности финансовых приложений, разрабатываемых на Erlang / Elixir.

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

Быть успешным в сфере IT или что убивает IT'шников?

Reading time5 min
Views65K
Данную статью я написал, основываясь на своем личном опыте, поэтому все что упомянуто в ней, я опробовал сам!

Почему я вообще решил написать об этом? Боль в спине!

Важно рассмотреть этот вопрос достаточно глубоко потому, что это касается не только физического здоровья, но и радости, благополучия в семье, успеха в делах, внутренней энергии, а значит и работоспособности, и даже долголетия! (а ведь хочется на пенсии подольше наслаждаться хорошим самочувствием, а значит и здоровьем)
Здоровье до того перевешивает все остальные блага жизни, что поистине здоровый нищий счастливее больного короля — Артур Шопенгауэр
А чем вообще мы занимаемся на работе, в физическом плане?

Водим мышкой и «тычем кнопки»


В общем, прости нас, запястье. Вы спросите почему? Да потому, что со временем оно начинает жутко болеть, доставлять кучу неудобств, и даже ронять предметы. (У моей бабушки именно так, водила она не мышку, а кисть.)

Молчу уже про туннельный синдром.

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

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

Моё разочарование в софте

Reading time11 min
Views393K

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


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.

Чтобы избавиться от боли в спине вам, возможно, придётся сидеть по-другому

Reading time7 min
Views355K


Когда я сижу, у меня болит спина.

Это происходит уже последние 10 лет. И неважно, где я нахожусь – на работе, в ресторане, даже дома на диване. Моя поясница кричит: «Прекрати сидеть!»

Чтобы уменьшить боли в спине, на работу я купила себе коленный стул. Потом стол для работы стоя. Потом вернулась к обычному стулу, потому что мне стало больно стоять.

Я ходила к врачам, хирургам-ортопедам и специалистам по боли. Я освоила пилатес, увеличила свою гибкость и силу мускулов. В какой-то момент мой пресс стал таким сильным, что муж стал называть его «дощечкой».

Эти средства немного помогли – сначала. Но боль так и не ушла. Поэтому несколько лет назад я решила принять это как должное: сидячее положение причиняет мне боль, и так будет всегда.

С — не низкоуровневый язык

Reading time11 min
Views80K


Ваш компьютер не является быстрой версией PDP-11


Привет, Хабр!

Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

Мне попалась на глаза статья Дэвида Чизнэлла, исследователя Кембриджского университета, в которой он оспаривает общепринятое суждение о том, что С — язык низкого уровня, и его аргументы мне показались достаточно интересными.

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

Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
Читать дальше →

Цена JavaScript в 2018 году

Reading time27 min
Views39K
Процесс работы пользователей с интерактивными веб-сайтами может включать в себя шаг отправки им JavaScript-кода. Часто — слишком большого объёма такого кода. Если на сайте используется очень много JavaScript, это особенно сильно сказывается на мобильных пользователях. Например, вам случалось бывать на мобильных веб-страницах, которые, вроде бы, выглядят как уже готовые к работе, но не реагируют на щелчки по ссылкам или на попытки прокрутить страницу?


JavaScript-код, который попадает в мобильные браузеры, всё ещё остаётся самым дорогостоящим ресурсом, так как он, многими способами, может задержать переход страниц в состояние, в котором с ними можно взаимодействовать. Какую нагрузку на системы создаёт JavaScript в наши дни? Как анализировать сайты? Как ускорить загрузку и обработку браузерами интерактивных веб-страниц? Эдди Османи, перевод материала которого мы сегодня публикуем, решил найти ответы на эти и на многие другие вопросы, встающие перед теми, кто пользуется JavaScript для разработки веб-сайтов в 2018 году.
Читать дальше →

Information

Rating
3,591-st
Location
Россия
Works in
Registered
Activity