Search
Write a publication
Pull to refresh
53
0

Разработчик под Android, перешедший на Rust

Send message

Как быстро прототипировать приложения с CSS-сеткой и CSS-переменными

Reading time4 min
Views11K
Как CSS-сетка, так и CSS-переменные представляют собой мощные инструменты для frontend-разработчиков. Первое позволяет значительно упростить создание макетов веб-сайта, в то время как второе дает всю мощь переменных таблицам стилей.

image

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

PHP: фрактал плохого дизайна

Reading time32 min
Views207K

Предисловие


Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

Тут другое дело. PHP не просто неудобен в использовании, плохо мне подходит, субоптимален или не соответствует моим религиозным убеждениям. Я могу рассказать вам много хороших вещей о языках, которых я стараюсь избегать, и много плохих вещей о языках, которые мне нравятся. Вперёд, спрашивайте! Получаются интересные обсуждения.

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

PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
Читать дальше →

Туннели и VPN, устойчивые к DPI

Reading time10 min
Views167K
Мы живем в интересное время. Я бы даже сказал, в удивительное. По одну сторону мы видим неких лиц, которые очень хотят знать, о чем между собой разговаривают другие люди, и очень хотят указывать им, что можно читать, а что нельзя. С другой стороны граждане, которые хотят отстоять свои права тайны личной переписки и свободного получения информации, и не хотят, чтобы факты этой самой переписки и получения этой самой информации были использованы против них. Бонусом страдает огромное количество сторонних сайтов, сервисов и бизнесов, которых задевает «ковровыми блокировками».

Но нет, эта статья не об обществе, а о технологиях.

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

Релиз неофициального MTProto прокси на Python, особенности протокола

Reading time6 min
Views26K
image

Недавно разработчики Telegram выложили исходные тексты прокси-сервера, работающего по протоколу MTProto. На хабре вышли статьи об особенностях его сборки и перепаковке докер-контейнера с ним. Официальный прокси сервер, написанный на С, удивляет объемом кода — примерно 23 тысячи строк. Одновременно с этим, а иногда и чуть раньше, вышло несколько альтернативных реализаций, но ни одна из них не поддерживала возможность рекламы своего канала.

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

Создание, настройка и использование собственного Git-сервера

Reading time7 min
Views252K
Материал, перевод которого мы сегодня публикуем, посвящён настройке Git-серверов. Git — это система управления версиями, разработанная Линусом Торвальдсом. Git пользуются миллионы людей во всём мире. Компании, вроде GitHub, предлагают службы хостинга кода, основанные на Git. По информации, которую можно найти в различных публикациях, GitHub является крупнейшим сервисом для хостинга IT-проектов. В частности, в 2017-м году сообщество GitHub достигло 24 миллионов разработчиков, которые трудятся над 67 миллионами репозиториев. В наши дни GitHub пользуются абсолютно все — от программистов-одиночек, до крупных организаций. Надо сказать, что даже компания Google перешла на GitHub, закрыв собственный проект схожей направленности.

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

Исследования показывают: люди, у которых «чересчур много интересов» имеют больше шансов на успех

Reading time13 min
Views29K


Самый исчерпывающий кейс, объясняющий, почему в современной «экономике знаний» почти каждый должен стать энциклопедистом.

«Мастер на все руки, а толком ничего не умеет».

Предостережение против универсализма сохранилось в многовековой истории десятков языков. «У него каких только ножей нет — и ни одного острого», — предупреждают китайцы. А в Эстонии есть поговорка «девять ремесел, и голод — десятое».

Однако, многие из наиболее неординарных личностей — как живших в прошлом, так и наших современников — были универсалами: таковы Илон Маск, Стив Джобс, Ричард Фейнман, Бенджамин Франклин, Томас Эдисон, Леонардо да Винчи и Мария Кюри — список далеко не полон.

В чем же здесь дело?

Если попытка универсализма — путь к посредственности, то почему наиболее исчерпывающее исследование о самых видных ученых в истории показало, что 15 из 20 были энциклопедистами? Ньютон. Галилей. Аристотель. Кеплер. Декарт. Гюйгенс. Лаплас. Фарадей. Пастер. Птолемей. Гук. Лейбниц. Эйлер. Дарвин. Максвелл — все энциклопедисты.

Если пытаться делать все сразу так неэффективно, то почему основатели пяти крупнейших компаний в мире – Билл Гейтс, Стив Джобс, Уоррен Баффетт, Ларри Пейдж и Джефф Безос – все энциклопедисты (а также придерживаются «правила пяти часов»)? Эти легендарные люди – просто гениальные исключения? Либо это люди, которым мы могли бы (и должны) подражать, чтобы достичь успеха в современной «экономике знаний»?

Если стремление к универсализму – неэффективная карьерная стратегия, то почему более 10 академических исследований выявили корреляцию между количеством интересов/компетенций, которые удалось развить человеку, и его творческим потенциалом?

Переведено в Alconost
Читать дальше →

Теговые файловые менеджеры. Сравнительный обзор

Reading time20 min
Views60K

Где же была эта чертова картинка?! Я сто раз натыкался на нее, пока она была не нужна!

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

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

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

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

Какие удобства предлагают нам наиболее известные файловые менеджеры с поддержкой тегов?
Читать дальше →

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

Reading time21 min
Views24K
image

Недавно я выпустил свою первую игру BYTEPATH и мне показалось, что будет полезно записать свои мысли о том, чему я научился в процессе её создания. Я разделю эти уроки на «мягкие» и «жёсткие»: под мягкими я подразумеваю идеи, связанные с разработкой ПО, жёсткие — это более технические аспекты программирования. Кроме того, я расскажу о том, почему хочу написать собственный движок.

Мягкие уроки


Сообщу ради контекста, что начал делать собственные игры примерно 5-6 лет назад и у меня есть 3 «серьёзных» проекта, над которыми я работал до выпуска первой игры. Два из эти проектов мертвы и полностью провалились, а последний я временно приостановил, чтобы поработать над BYTEPATH.

Вот gif-анимации из этих проектов



Первые два проекта провалились по разным причинам, но с точки зрения программирования они провалились (по крайней мере, как мне это видится) потому, что я слишком часто пытался быть слишком умным и заранее обобщал слишком многое. Большинство мягких уроков связано с этим провалом, поэтому важно было сказать об этом.
Читать дальше →

Красивый листинг файлов и директорий в nginx

Reading time9 min
Views41K

Для web-сервера Apache существует множество инструкций, в том числе и на Хабре, как стилизовать стандартный листинг файлов и директорий. Однако, как сделать также для сервера nginx, в русскоязычном интернете не найти. Порывшись на просторах интернета я нашел один репозитарий, где как раз и решается этот вопрос. Но для кириллических наименований файлов и папок потребовалась небольшая работа "напильником".


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

IPv6 в каждый дом: Cвой собственный IPv6 сервер брокер (6in4)

Reading time3 min
Views46K


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

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

Почему я не подписываю соглашения о неконкуренции

Reading time8 min
Views51K
После университета я устроился в IT-отдел компании по обработке платежей и взысканию долгов. Мой стол стоял рядом с колл-центром: я целыми днями выслушивал, как люди на пособии делают покупки не по карману и влазят в долги. Когда несколько продажников ушли и начали собственный бизнес, прихватив с собой клиентов, компания предприняла меры. Она заставила всех в офисе, от сотрудников на вводе данных до операторов поддержки, подписать соглашения о неконкуренции. Это было первое соглашение о неконкуренции, которое я отказался подписать. В течение следующих пятнадцати лет меня ещё несколько раз попросят подписать такие бумаги, всегда перед приёмом на работу. Я всегда отказывался, и до недавнего времени это никогда не становилось препятствием для приёма на должность.

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

В 2017 году Иллинойс принял закон, запрещающий такие соглашения для низкооплачиваемых работников, обычно со ставкой ниже $13 в час. Даже в штатах, где подобные контракты не запретили, их часто признают не имеющими законной силы. С чисто этической точки зрения они ограничивают одну из самых основных предпосылок капитализма: свободу выбора, на кого работать. Это соглашение фактически ставит работника в положение должника по отношению к нынешнему работодателю, хотя долг не финансовый.
Читать дальше →

Люди не хотят чего-то действительно нового — они хотят привычное, но сделанное иначе

Reading time4 min
Views16K

От переводчика: это довольно старая статья 2015 года, однако, на мой скромный вкус, она по-прежнему актуальна, как и многие другие материалы от Нира Эяля.
Если ваш новый продукт или сервис не набирает популярность, спросите себя: как найти мой ролл «Калифорния»?
Должен признать, что бенто-ланч едва ли является источником серьёзных бизнес-уроков. Однако, давайте взглянем на ролл «Калифорния» — понимание влияния этого знакового блюда японской кухни может помочь привести ваш продукт к успеху и избежать провала.
Читать дальше →

Как уже снова не получить телефон (почти) любой красотки в Москве, или интересная особенность MT_FREE

Reading time6 min
Views189K

UPD0 14.03 8:21 — Телефон больше не получить. Остальные интересные данные пока остались.


UPD1 14.03 10:39 — Дабы не очернять ребят из саппорта MaximaTelecom: Сообщил о ней я окольными путями, но раз пять переспросил и уточнил, дошло ли моё письмо до адресата — короче говоря, убедился, что оно у эфемерного (имена просили молчать) ответственного за вафли лица в метро. Я признаю, что это тупо, но цепочка "проблема в мосметро" → "у меня уже были связи со всяким мос, надо позвонить им" мне показалась весьма и весьма логичной в момент обнаружения уязвимости.


UPD2 14.03 15:40 — Уязвимость была найдена в uid Antxak — суть в том, что в uid лежит md5 телефона без соли. Снова можно искать телефоны.


Пример намайненного телефона

image


UPD3 14.03 18:55 — Уязвимый хэш в uid был заменен на тот же, что и в телефоне. Пока не раскололи последний.


UPD4 15.03 20:51 — Значения и ключи почти всех полей были заменены на предположительно обфускованные.

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

15 когнитивных искажений

Reading time9 min
Views185K
Люди сталкиваются с большим объёмом информации, часть из которой достоверна, а часть освещает интересующую область односторонне, а иногда и сознательно искажённо.

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



Начнём с того, что люди не всегда мыслят рационально. Это данность, которая обусловлена принципами работы нашего интеллекта, выработанными в процессе эволюции. Условно, представим разум, разделённый на две Системы. Устройство разума не так однозначно, но описанное упрощение позволит понять причины искажений. Первая система генерирует решения и гипотезы быстро «если коснёмся горячего предмета, то отдёрнем руку». Вторая, принимает решения путём логических рассуждений. Первая Система генерирует гипотезы, а вторая принимает их или отвергает. Такой способ мышления медленный и энергозатратный. Логическое рассуждение используется людьми реже и требует больших усилий. Это причина большинства когнитивных искажений.

Так, галочка «по умолчанию согласен» позволила увеличить количество согласных на донорство до 86% в Швеции, тогда как в Дании, где при получении прав нужно самостоятельно ставить согласие, т. е. принимать осознанный выбор, количество согласных на донорство 4%.
Читать дальше →

Почему GitHub не поможет нанять разработчика

Reading time6 min
Views46K
Один из моих текущих проектов связан со сбором данных из GitHub-профилей разработчиков. Профили GitHub затруднительно использовать как источник данных, поэтому хочу сразу перечислить проблемы при попытке оценить разработчика только по его вкладу на GitHub.

Одна из распространённых ошибок — попытка работодателя отфильтровать кандидатов по профилям GitHub. Многие по-прежнему думают, что можно оценить способности разработчика, взглянув на его вклад в проекты с открытым исходным кодом. Например, в последнем списке вакансий на Hacker News куча объявлений с просьбой указать профиль GitHub в своём заявлении о приёме на работу.

Есть несколько правильных статей, почему нельзя требовать от кандидатов профили GitHub. Особенно рекомендую «Этика неоплачиваемого труда и сообщество Open Source» и «Почему GitHub — не резюме». Обе статьи отлично объясняют причины, почему при найме не следует спрашивать о вкладе в свободные проекты. Но я не о том, что это неэтично или что GitHub не слишком подходит для демонстрации проектов.

Я о том, почему эти профили просто малополезны.

Разреженность данных


Если посмотрите публичный профиль лучшего инженера-программиста, с которым я когда-либо работал, то увидите примерно такое:


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

Не так страшен жидкий металл

Reading time4 min
Views110K


T-1000


Наверное многие знают или хотя бы раз слышали о существовании такой «термопасты» как жидкий металл. Если коротко — это термоинтерфейс, теплопроводность которого на порядок выше даже самой лучшей обычной термопасты. Именно так — не в 2, не в 3, а в целых 10 раз выше.

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

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

А в некоторых случаях даже в скальпировании нет необходимости. О чем и пойдет речь далее.
Читать дальше →

Начинающему веб-мастеру: делаем одностраничник на Bootstrap 4 за полчаса

Reading time15 min
Views227K
Фреймворк Bootstrap — это свободный набор инструментов для создания интерфейсов сайтов и веб-приложений. Его возможности ориентированы исключительно на фронтенд-разработку. Bootstrap — проект весьма популярный, о чём, например, говорит то, что он занимает (по состоянию на начало марта 2018-го года) второе место по количеству звёзд на GitHub.


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

Пряморукий DNS: делаем правильно

Reading time16 min
Views159K
Представляем вашему вниманию очень эмоциональный рассказ Льва Николаева (@maniaque) о том, как надо настраивать DNS и особенно, как делать не надо. Вот прямо после каждого пункта можете мысленно добавлять: «Пожалуйста, не делайте этого!» В своем докладе Лев так и говорит.

Статья будет состоять из трех частей:

1. Как сделать резольвер (unbound, bind)

Резольвер — это та штука, которую вы прописываете в настройках своей операционной системы, чтобы можно было превращать понятные человеку адреса типа ya.ru в непонятное 87.250.250.242.

2. Как держать зоны (PowerDNS)

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

3. Как взболтать, но не смешивать (PowerDNS + unbound)


Менеджерам пора проснуться

Reading time4 min
Views35K

«Разве у тебя нет цикла, который можно написать?»

Самая популярная моя статья называется «Почему ваш программист просто хочет кодировать». К настоящему моменту её прочитали более 62 000 раз.

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

К сожалению, я не получил почти никакого отклика от менеджеров или руководителей по поводу этой истории.


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

Технические менеджеры, такие ситуации — это ваша вина


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

Почему я ушёл из Google и начал работать на себя

Reading time10 min
Views143K
Последние четыре года я работал разработчиком программного обеспечения в Google, но 1 февраля уволился, потому что они не сделали мне подарок на Рождество.

Шучу, на самом деле всё немного сложнее.

Первые два года


Первые два года я любил Google.

Когда при ежегодном опросе сотрудников мне задавали вопрос, вижу ли я себя в Google через пять лет, я отвечал «разумеется, без вариантов».

Ну конечно я буду в Google через пять лет. Я окружён лучшими инженерами в мире, использую самые продвинутые инструменты разработки в мире и кушаю самую бесплатную в мире еду.


Мой обычный день в Google.
— Ещё тортика, господин Программист? Он бесплатен в любом количестве.
— Не сегодня, Пьер. Я опаздываю на массаж, он тоже бесплатный.

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

Information

Rating
10,163-rd
Location
Bratislava, Bratislava, Словакия
Date of birth
Registered
Activity