Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

Как я заработал 1 000 000 $ без опыта и связей, а потом потратил их, чтобы сделать свой переводчик

Время на прочтение20 мин
Количество просмотров135K

Как все начиналось


Эта история началась 15 лет назад. Работая программистом в столице, я накапливал деньги и увольнялся, чтобы потом создавать собственные проекты. Для экономии средств уезжал домой, в небольшой родной город, где работал над сайтом для студентов, программой для торговли, играми для мобильных телефонов. Но из-за отсутствия опыта ведения бизнеса это не приносило дохода, и вскоре проекты закрывались. Приходилось снова ехать в столицу и устраиваться на работу. Эта история повторилась несколько раз.

Когда у меня в очередной раз закончились деньги, наступил кризис. Я не смог найти работу, ситуация стала критической. Пришло время посмотреть на все вещи трезвым взглядом. Нужно было честно признаться себе, что я не знаю, какие ниши выбрать для бизнеса. Создавать проекты, которые просто нравятся, — путь в никуда.
Читать дальше →
Всего голосов 173: ↑164 и ↓9+215
Комментарии144

Обсуждение: стандартные UNIX-утилиты, которые мало кто использовал и использует сейчас

Время на прочтение3 мин
Количество просмотров11K
Неделю назад Дуглас Макилрой (Douglas McIlroy), разработчик конвейера UNIX и автор понятия «компонентно-ориентированное программирование», рассказал об интересных и необычных UNIX-программах, не нашедших широкого применения. Публикация запустила активное обсуждение на Hacker News. Мы собрали самое интересное и будем рады, если вы присоединитесь к дискуссии.

Читать дальше →
Всего голосов 18: ↑12 и ↓6+14
Комментарии9

Что нового в Android 11 для пользователей и разработчиков

Время на прочтение5 мин
Количество просмотров30K


На днях внезапно выкатили превью-версию Android 11 для разработчиков. Google говорит «разработчики, вы в прошлом году хорошо нам нафидбечили, поэтому в этот раз мы даём вам превью раньше, чем когда-либо» (релиз намечен на третий квартал, то есть до него примерно полгода).

Из-за этого версия особенно сырая, в неё могли попасть не все готовящиеся фичи (что-то привлекательное небось припасли для Google I/O), и часть вещей до релиза ещё могут откатить обратно. Но всё равно же интересно разобраться, что нового!

Как водится, сайты вроде 9to5Google и Android Police тут же потестировали превью-версию в хвост и в гриву, а в итоге выпустили кучу текстов: про каждое нововведение по отдельности. А мы продрались через эту кучу текстов и сделали для Хабра сводную подборку на русском — такую, чтобы была понятна и обычному пользователю Android, но с приписками конкретно для мобильных разработчиков.

Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии104

30+ лаконичных профессиональных рекомендаций для Android разработчика

Время на прочтение12 мин
Количество просмотров7.4K
Специально для студентов базового курса «Android-разработчик» подготовили перевод полезного материала.





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

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

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

Итак, не теряя больше времени, давайте начнем.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+10
Комментарии5

BPF для самых маленьких, часть нулевая: classic BPF

Время на прочтение22 мин
Количество просмотров57K

Berkeley Packet Filters (BPF) — это технология ядра Linux, которая не сходит с первых полос англоязычных технических изданий вот уже несколько лет подряд. Конференции забиты докладами про использование и разработку BPF. David Miller, мантейнер сетевой подсистемы Linux, называет свой доклад на Linux Plumbers 2018 «This talk is not about XDP» (XDP – это один из вариантов использования BPF). Brendan Gregg читает доклады под названием Linux BPF Superpowers. Toke Høiland-Jørgensen смеется, что ядро это теперь microkernel. Thomas Graf рекламирует идею о том, что BPF — это javascript для ядра.


На Хабре до сих пор нет систематического описания BPF, и поэтому я в серии статей постараюсь рассказать про историю технологии, описать архитектуру и средства разработки, очертить области применения и практики использования BPF. В этой, нулевой, статье цикла рассказывается история и архитектура классического BPF, а также раскрываются тайны принципов работы tcpdump, seccomp, strace, и многое другое.


Разработка BPF контролируется сетевым сообществом Linux, основные существующие применения BPF связаны с сетями и поэтому, с позволения @eucariot, я назвал серию "BPF для самых маленьких", в честь великой серии "Сети для самых маленьких".

Читать дальше →
Всего голосов 62: ↑62 и ↓0+62
Комментарии5

Яндекс.Диск запретил использование open source утилиты rclone. UPD — снова работает

Время на прочтение6 мин
Количество просмотров109K

Предыстория


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


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


$ ls -l /mnt/yadisk
ls: reading directory '.': Input/output error
total 0
Читать дальше →
Всего голосов 257: ↑247 и ↓10+305
Комментарии381

Линеаризуем асинхронный код с помощью корутин

Время на прочтение17 мин
Количество просмотров4.8K
image

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

Наша цель — получить из лапши коллбэков:

    abActor.getA(ABActor::GetACallback([this](int a) {
        abActor.getB(ABActor::GetBCallback([a, this](int b) {
            abActor.saveAB(a - b, a + b, ABActor::SaveABCallback([this](){
                abActor.getA(ABActor::GetACallback([this](int a) {
                    abActor.getB(ABActor::GetBCallback([a, this](int b) {
                        std::cout << "Result " << a << " " << b << std::endl;
                    }));
                }));
            }));
        }));
    }));

Что-то вроде:

const int a = co_await actor.abActor.getAAsync();
const int b = co_await actor.abActor.getBAsync();
co_await actor.abActor.saveABAsync(a - b, a + b);
const int newA = co_await actor.abActor.getAAsync();
const int newB = co_await actor.abActor.getBAsync();
std::cout << "Result " << newA << " " << newB << std::endl;

Итак, приступим.
Читать дальше →
Всего голосов 8: ↑5 и ↓3+5
Комментарии96

Парсеры Пратта для чайников

Время на прочтение8 мин
Количество просмотров8.1K

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


Картину портят выражения: постфиксные, инфиксные и прочие. Проблема: вы не можете понять, какого типа выражение вы обрабатываете до тех пор, пока не разберёте его первую половину. Зачастую для вас также важны приоритет операции и её ассоциативность, чтобы построенное AST имело правильную структуру.


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


Читать дальше →
Всего голосов 11: ↑9 и ↓2+14
Комментарии14

FreeBSD: гораздо лучше GNU/Linux

Время на прочтение11 мин
Количество просмотров139K
Сравню FreeBSD с GNU/Linux системами. Всё это исключительно субъективное мнение! Многое это просто мой опыт. Почти 100% всего времени я провожу за компьютером и исключительно Unix системами, примерно поровну с FreeBSD и GNU/Linux, вот уже 20+ лет.

Большая часть достоинств FreeBSD также относится и к другим популярным свободным BSD системам: NetBSD, OpenBSD, DragonflyBSD. Что-то в этих системах будет получше, многое появилось впервые не в FreeBSD, но перекочевало в неё. FreeBSD многое наследует от NetBSD (различные драйвера и подсистемы), от OpenBSD (сетевые технологии), DragonflyBSD (лучшая масштабируемость на многопроцессорных платформах), от Solaris (DTrace, идея Jail-ов, ZFS), сочетая самое лучшее ото всех.

Если коротко, то FreeBSD это высокое качество, надёжность, удобство и простота работы. GNU/Linux это зоопарк, помойка малосвязанного кода, мало чего доделываемое до конца, отсутствие документации, хаос, базар.
Читать дальше →
Всего голосов 139: ↑83 и ↓56+54
Комментарии391

Простой прием для управления прокрастинацией

Время на прочтение2 мин
Количество просмотров84K
Попробую поделиться советом, как можно немного осознать свое состояние и выработать полезный навык. Все написанное основано только на личном опыте, желании им поделится и почерпнуть из обратной связи полезное.
Читать дальше →
Всего голосов 90: ↑87 и ↓3+111
Комментарии165

Назад к истокам: рулим компьютером прямо из MBR

Время на прочтение10 мин
Количество просмотров24K

Разворачивал в очередной раз Linux-образ на USB-drive (почему-то им оказался Manjaro, но это совсем другая история), и в голову пробрались странные мысли: BIOS увидел флешку, а дальше-то что? Ну да, там MBR, скорее всего GRUB и… А раз в MBR затесался чей-то кастомный код, значит и простой человек из Адыгеи может запрограммировать что-нибудь на «большом» компьютере, но вне операционной системы.


А так как делать такие штуки на языках высокого уровня слишком жирно, а ассемблеров мы не знаем, будем шпарить прямо на опкодах для 8086.


Читать дальше →
Всего голосов 102: ↑102 и ↓0+102
Комментарии77

IPv6 — вы делаете это неправильно

Время на прочтение5 мин
Количество просмотров16K


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

Бывает, что хостеры назначают разным клиентам IPv6-адреса внутри одной сети /64. При этом крупные сервисы, вроде Google, воспринимают все адреса внутри диапазона /64 как одного клиента. В результате клиенты могут страдать из-за действий соседа по диапазону.

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

В статье мы разберем основные ошибки использования IPv6 провайдерами.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+12
Комментарии22

Пришло время бесплатных сайтов

Время на прочтение3 мин
Количество просмотров173K

Привет, %username%!




Сегодня многие начинающие веб-разработчики делают большую ошибку, и не одну. Они что-нибудь сверстают, а потом покупают хостинг. Далее покупают домен. Регистрируют и подключают SSL-сертификат. Я, спасаясь от минус-кармы, просто расскажу как не тратить деньги на свои тестовые проекты.
Читать дальше →
Всего голосов 56: ↑31 и ↓25+17
Комментарии98

Автоматные рекурсивные вычисления

Время на прочтение10 мин
Количество просмотров4.8K

1. Введение


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

В теории автоматов понятие вложенных автоматов, на базе которых строилась бы практика автоматных подпрограмм (АПП), обсуждается редко. Подобная (вложенная) иерархическая организация автоматов, если и рассматривается, то весьма поверхностно. Одной из причин подобного отношения может служить сложность реализации вложенной иерархии на аппаратном уровне [1, 2].

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

При всех частных проблемах формирования вложенной автоматной модели ее формальное определение не вызывает каких-то проблем. Но, с другой стороны, выбор построения иерархии модели, безусловно, будет оказывать существенное влияние на ее программную реализацию.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+6
Комментарии2

Шаблон Visitor устарел для Kotlin, но знать его стоит

Время на прочтение6 мин
Количество просмотров3.8K

Рассмотрим шаблон проектирования Visitor и покажем, что использовать его при программировании на Kotlin не стоит. Будет теория, минималистичная реализация, реализация замены и доводы в пользу замены, подкрепленные практическими изысканиями. Не будет диаграмм классов. Все попробовать можно онлайн в play.kotlinlang.org


Читать дальше →
Всего голосов 6: ↑3 и ↓3+3
Комментарии17

9 стратегий для маркетинга мобильных игр

Время на прочтение8 мин
Количество просмотров26K


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

Разработка и релиз игры — это лишь начало пути. Если у вас не будет грамотной стратегии продвижения, то ваша игра рискует затеряться среди других. Самое сложное — добиться, чтобы игра выделялась на фоне остальных; только так вы убедите людей, что ее стоит скачать.

Возможно, вы только что запустили новую игру; может быть, хотите перезапустить имеющуюся; не исключено, что вам просто нужны новые игроки — вне зависимости от ситуации, есть ряд маркетинговых тактик для продвижения мобильных игр, и некоторые из них вы можете применить самостоятельно — среди них есть даже бесплатные или относительно недорогие.
Всего голосов 5: ↑2 и ↓3+3
Комментарии11

Как реализованы конвейеры в Unix

Время на прочтение16 мин
Количество просмотров20K

В этой статье описана реализация конвейеров в ядре Unix. Я был несколько разочарован, что недавняя статья под названием «Как работают конвейеры в Unix?» оказалась не про внутреннее устройство. Мне стало интересно, и я зарылся в старые источники, чтобы найти ответ.
Читать дальше →
Всего голосов 75: ↑75 и ↓0+75
Комментарии21

Как разрушалась личность блестящего молодого программиста

Время на прочтение24 мин
Количество просмотров111K

Своими программами Ли Холлоуэй заложил основы компании Cloudflare, специализирующейся на интернет-безопасности. Но со временем он стал апатичным, непредсказуемым, отдалился от всех – и долгое время никто не мог понять, что с ним произошло.




В пятницу 13 сентября 2019 года Мэтью Принс и Мишель Зэтлин, сооснователи компании Cloudflare из Сан-Франциско, занимающейся интернет-безопасностью, стояли на узком мраморном балконе, с которого открывался вид на Нью-Йоркскую фондовую биржу. Стайка директоров компании сгрудилась рядом с Принсом, готовая вести вслух обратный отсчёт. «Громче! Громче! – призывал их Принс. – Пять! Четыре! Три!..» Ровно в 9:30 основатели потянулись к знаменитому колоколу биржи, знаменующему начало торгового дня, а также – выход их 10-летней компании на биржу. Так они изменили свою жизнь и сорвали куш. В тот момент они обогатились на миллионы долларов.

Более сотни сотрудников и инвесторов, стоявших внизу на первом этаже, разразились радостными криками, а их поднятые телефоны фотографировали происходящее. Кристин Холлоуэй, сотрудник №11, подняла взгляд на балкон, сделала несколько фотографий, а потом отправила их через мессенджер своему мужу, Ли Холлоуэю, третьему сооснователю компании. Он в это время находился дома, в Калифорнии. Периодически чьё-нибудь знакомое лицо выныривало из толпы, чтобы сказать ей: «Ли должен был быть здесь».
Всего голосов 131: ↑124 и ↓7+155
Комментарии223

Пайка компонентов 0201. Слабонервных просьба удалиться от экранов

Время на прочтение4 мин
Количество просмотров101K
Доброго времени суток, Хабр!



Хочу поделиться опытом пайки плат. Также затрону тему установки совсем маленьких компонентов с типоразмером 0201.
Читать дальше →
Всего голосов 73: ↑71 и ↓2+105
Комментарии210

3 бесплатных инструмента, которые сделают прототипирование игр еще проще

Время на прочтение5 мин
Количество просмотров16K


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

Ведущий геймдизайнер Ustwo Games, создателей Monument Valley и недавней Assemble with Care для Apple Arcade, рассказал, как студия использует бесплатные инструменты для креативного прототипирования. Перевод под катом.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии0

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность