Search
Write a publication
Pull to refresh
-15
0
Антон @Acuna

Разработка ПО

Send message

Побеждаем NPE hell в Java, не используя IntelliJ IDEA

Reading time5 min
Views22K

Отказ от ответственности


Во-первых, материал появился потому, что хотелось быстро объяснить индусам коллегам, что такое null-анализ, чем он хорош и почему нужно прямо сейчас преодолеть корпоративную лень и начать использовать этот анализ в проектах. Статьи, содержащей полную систематизированную информациию о предмете без привязки к IDE, не нашлось, так что пришлось писать самому. И хотя в результате полной систематизации так и не получилось, всё равно захотелось поделиться материалом с более широкой аудиторией. Будет минимум текста и много изображений.

Во-вторых, на ресурсе уже есть отличная статья tr1cks, посвящённая IntelliJ IDEA, которая усиливает и без того стойкое впечатление, что IDEA — это очень хорошо, а Eclipse — это для бедных (что стало притчей во языцех). Для соблюдения баланса я сконцентрируюсь на Eclipse.
Читать дальше →

Кому еще дисковый сотовый телефон?

Reading time8 min
Views19K

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

Теория инвестиций для начинающих, часть 4

Reading time28 min
Views54K
Франс Франкен Младший. Смерть и скупец. XVII в. Галерея Wellcome, Лондон.

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

Краткое содержание четвёртой части:
  • как жить в мире, в котором среднестатистический инвестор паевого фонда получает доходность хуже рынка (купить рыночный портфель, то есть индекс);
  • какие инструменты позволяют купить индексный портфель в один клик (биржевые фонды, они же ETF'ы);
  • насколько эффективным может быть рынок, и как быстро новая информация отражается в цене акций (эффективность пугающая: рынок расследует космические катастрофы за несколько минут);
  • если не покупать индекс, то можно ли заработать на фондовом рынке по-другому (можно, если вы помогаете остальным преодолевать рыночные трения);
  • как автор инвестирует собственные деньги и копит на пенсию (всё скучно: индексные фонды).
Читать дальше →

О видеомагнитофонах и программировании

Reading time8 min
Views9.9K

Давно ли вы записывали передачи с ТВ? Кажется сейчас этим занимаются исключительно профессионалы, а ведь когда-то запись с ТВ была явлением массовым. Представьте: нет интернета и ютюба, торрентов и стриминговых сервисов, нет IPTV со встроенной "машиной времени". Телевидение является основным средством доставки движущихся картинок населению, и это население желает часть из них сохранить на память. Пару лет назад я перебирал свои старые видеокассеты: помимо самых ценных записей на видеокамеру там было много видеоартефактов из девяностых. "Назад в будущее", все три фильма на одной кассете, записаны как-то в новогодние каникулы с телека в режиме LP. Музыкальные видеоклипы, выступления родственников по городскому ТВ, и подобное. Чаще все это записывалось прямо в процессе просмотра: так получалось лучше всего. Ты держишь в руках пульт, аккуратно вырезаешь все рекламные паузы. А потом не раз пересматриваешь. И постоянно перезаписываешь одну программу поверх другой: новые кассеты стоят не так уж дешево.

Рано или поздно возникала ситуация, когда ты никак не попадаешь домой к какой-то передаче, а посмотреть очень хочется. Примеры (настоящие): заключительный эпизод сериала "Элен и ребята", эфир игры "Звездный час", в которой играет твой одноклассник. Новогодняя трансляция зарубежных видеоклипов, пока ты отмечаешь в гостях. Собственно, самая главная польза от видеомагнитофона и заключалась в таком тайм-шифте: с конца семидесятых годов прошлого века появилась возможность смотреть что-то не по желанию составителя программы телепередач, а в любое удобное время. Для этого видеомагнитофон надо было программировать. Это слишком громко сказано, но на самом деле процедура настройки, так чтобы этот ящик включился в нужный момент, записал передачу на определенном телеканале, и выключился, была нетривиальной. В моем случае она усложнялась наличием инструкции к магнитофону только на немецком и слабым владением иностранными языками. Но я справился. Данное сочинение посвящено средствам автоматизации домашнего видео и попыткам упростить страдания пользователя. Приглашенные звезды: сканер штрих-кодов и код на языке Си.

Читать далее

Как я создал собственный алгоритм YouTube (чтобы не тратить время впустую)

Reading time8 min
Views24K


Побег от алгоритма YouTube


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

Всё это неудивительно: алгоритм отдаёт приоритет кликам и времени просмотра.

Поэтому я поставил перед собой задачу: Смогу ли я написать код, который автоматически будет находить ценные видео, избавив меня от привязанности к алгоритму YouTube?

Вот так всё и началось.

Оптимально выстроенные планы


Я начал с визуализации того, что должен делать мой инструмент. Мне нужна была программа, которая будет (i) ранжировать видео на основании вероятной релевантности для меня и (ii) автоматически отправлять мне предлагаемые видео, из которых я смогу выбирать.

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

Как я клею топовые дроп домены на продвигаемый сайт

Reading time7 min
Views52K

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

Читать далее

Не лайтхаусом единым: как проверить свой сайт со всех сторон

Reading time3 min
Views19K


Когда мы говорим о веб-валидаторах и оптимизации сайта под них, мы чаще всего имеем ввиду Lighthouse/Pagespeed Insights от Google, который давно стал де-факто стандартом для оценки производительности сайта. Кто-то стремится к заветным 100 баллам даже на прототипах и шаблонных приложениях в две кнопки, кто-то в шутку создает абсолютно недоступный сайт с идеальным рейтингом, но для всех фронтендеров лайтхаус предоставляет вменяемую, хоть и довольно поверхностную, аналитику производительности сайта и поиск бутылочных горлышек. Однако скорость загрузки — лишь один из множества параметров, которые стоит проверять на своём сайте, и для большинства других есть свои валидаторы и скоринговые алгоритмы. Мы рассмотрим инструменты для каждого из значимых направлений и составим список, по которому стоит прогонять свой сайт, чтобы в дальнейшем не отлавливать проблемы вручную.
Читать дальше →

AnLinux: простой способ установить Linux-окружение на Android-телефон без рута

Reading time3 min
Views174K


Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.

Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.
Читать дальше →

Проектирование большого проекта на примере аналога Alibaba.com

Reading time9 min
Views23K
Многие рассказываю о проектировании: как пользоваться Axure или Sketch, какие функции должен содержать сайт, как правильно спроектировать страницу товара. Это все, безусловно, очень полезно, но не показывает полную картину происходящего в проектировании. В интернете даже нет ни одного полного примера технического задания на проекты такого уровня. На самом деле, чтобы спроектировать большой сайт, нужно потратить сотни часов на исследования, прототипирование и разработку подробного ТЗ. В этой статье я впервые в рунете покажу все этапы проектирования и результаты по ним, полный динамический прототип (более 150 прототипов) и большое ТЗ (более 200 страниц описания). Все это мы будем делать на примере проектирования аналога крупнейшей в мире E-commerce площадки «Alibaba.com».
Читать дальше →

Социальные сети, перспективы развития и способы монетизации. Часть 1

Reading time13 min
Views27K
Недавно прошла конференция UA WEB, на которой я выступал с докладом на тему социальных сетей. И вот я решил его выложить на Хабре. Доклад получился большой, даже на конференции не уложился, поэтому буду выкладывать в 3 этапа. Прошу отнестись с пониманием, первая часть многим Хабралюдям, возможно, будет не такой интересной в силу их обширных знаний, но 2 и 3 точно понравиться! :)
Читать дальше →

Программисту. 10 ценных GitHub-репозиториев

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


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

20 самых известных ретро-ПК, идеальных для игр и программирования

Reading time6 min
Views43K

Все ПК из списка ниже в свое время выглядели, как гости из будущего. Возможно, так и есть, ведь они стали началом современной компьютерной индустрии. Всего в списке 20 моделей разных лет, расставленных автором статьи по значимости в порядке возрастания. Список субъективный, но в нем оказались действительно те модели, что стали историей. Если список кажется некорректным — это можно исправить. В конце статьи — голосование, которое позволит определить значимость каждого компьютера из списка по мнению Хабра.
Читать дальше →

Разработка и модификация прошивки для Android телефонов на примере HTC Hero GSM. Часть 1

Reading time10 min
Views165K
Причины по которым люди ставят модифицированные версии прошивок различны. Кому-то хочется удивить друга смешной анимацией загрузки, кому-то не хватает определенного функционала (например vpn), кто-то хочет выжать максимум производительности из своего телефона за счет разгона процессора, а кто-то пять месяцев ждет новую версию операционной системы Android для своего любимого HTC Hero.
На данный момент уже существует превеликое множество самых невообразимых сборок для самых различных телефонов на базе Android. Иногда они даже появляются в той или иной форме на Хабре.
Я же хочу Вам рассказать о процессе и особенностях создания кастомной прошивки на основе официальной. Данные знания были получены в процессе разработки одной из не многих отечественных прошивок на базе Android 2.1 для HTC Hero GSM. И более или менее успешно опробованы на себе и других подвернувшихся пользователях одного крупного российского форума.
Не смотря на то, что все нижеследующее было сделано для HTC Hero, данные правила и особенности имеют полную силу для всех телефонов, особенно тех, которые разработаны компанией HTC и используют фирменную оболочку Sense.
Для экспериментов нам понадобится:
  • Android SDK желательно последней версии
  • Утилита apktool для реинжениринга системных приложений
  • Утилиты smali/baksmali для де-оптимизации системных приложений
  • Утилита unyaffs для извлечения системных файлов из образа
  • Скрипт split_bootimg.pl для извлечения ядра и ramdisk-а
  • Утилита testsign для подписывания пакета обновления и отдельных приложений
  • установленное и настроенное JRE
  • телефон с операционной системой Android
  • права суперпользователя и модифицированная подпрограмма восстановления (recovery rom)

Все вышеперечисленное доступно в версиях как для системы Linux так и для Windows. Но в своих примерах я буду ориентироваться на использование Linux.
Конечно же ни root-права ни recovery нам не нужен для того, чтобы начать разработку, однако если мы захотим опробовать наше творение, они нам понадобятся. Для HTC Hero можно использовать RA-hero-v1.6.2.
Наверное, самое время напомнить, что использование неофициальных прошивок лишает нас гарантии, но где наша не пропадала. И несмотря на то, что большинство операций безопасно — всегда нужно четко понимать что и зачем делается, дабы не причинить необратимый вред своему андроиду
Читать дальше →

7 расширений для VS Code, установив которые, вы не захотите выходить из редактора

Reading time4 min
Views52K
…Даже простейшие инструменты могут давать людям возможность делать великие дела.
Биз Стоун, «Решайся! Заряд на создание великого от основателя Twitter»

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



Многие программисты используют в наши дни Visual Studio Code. Этот редактор кода поддерживает установку расширений. Существует столько подобных расширений, что можно говорить о том, что возможности настройки VS Code практически безграничны.

Но на Visual Studio Marketplace, на площадке, где публикуются расширения для VS Code, опубликовано просто невероятное количество расширений. А это значит, что программистам сложно находить именно то, что им действительно пригодится. Если некое расширение показалось кому-то полезным, то оно, вполне возможно, принесёт пользу и другим людям. Поэтому я расскажу здесь о 7 расширениях для VS Code, которые способны значительно облегчить работу программиста. Всё это — бесплатные расширения. Любой может свободно их загружать и использовать.
Читать дальше →

Очереди сообщений в PostgreSQL с использованием PgQ

Reading time4 min
Views32K


Очереди сообщений используются для выполнения: отложенных операций, взаимодействия сервисов между собой, «batch processing» и т.д. Для организации подобных очередей существуют специализированные решения, такие как: RabbitMQ, ActiveMQ, ZeroMQ и тд, но часто бывает, что в них нет большой необходимости, а их установка и поддержка причинит больше боли и страданий, чем принесет пользы. Допустим, у вас есть сервис, при регистрации в котором пользователю отправляется email для подтверждения, и, если вы используете Postgres, то вам повезло — в Postgres, почти из коробки, есть расширение PgQ, которое сделает всю грязную работу за вас.

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

Зачем вообще нужен PgQ, если можно просто создать табличку и записывать туда задачи? Казалось бы, можно, но вам придется учесть паралельный доступ к задачам, возможные ошибки (что будет, если процесс обрабатывающий задачу, упадет?), а также производительность (PgQ очень быстрый, а самописные решения, как правило, нет, особенно если транзакция в базе не закрывается во время всего выполнения задачи), но самое главное, почему на мой взгляд надо использовать PgQ, это то, что PgQ уже написан и работает, а самописное решение еще надо написать (UPD: про то, почему не стоит использовать самописные очереди, можно почитать, например, тут).
(UPD: т.к. PgQ работает поверх Postgres, все прелести транзакций можно использовать и в нем)

Но у PgQ есть один огромный минус — отсутствие документации, этот недостаток я и пытаюсь компенсировать этой статьей.
Читать дальше →

Как пройти собеседование или почему тебя не берут на работу?

Reading time12 min
Views40K
Не работать и получать кучу денег — мечта практически любого человека. Но если ты не грудастая, смазливая блондинка, которая готова на всё ради своей мечты, все таки работать придется. 

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

Компьютерные бренды 90-х

Reading time11 min
Views47K


Некоторые компании, работавшие на рынке компьютеров в 90-х годах, известны и поныне. Однако лет 25 назад их было значительно больше. Cloud4Y предлагает немножко поностальгировать и вспомнить компьютерные бренды, популярные в 90-х годах. Осторожно, будет много фото.

UPD: обновили статью, добавив фотографии Commodore 64 от ASh_XX
Названия из комментариев соберём, чтобы написать вторую часть. Спасибо за ваш интерес!
Читать дальше →

Zip-файлы: история, объяснение и реализация

Reading time76 min
Views105K


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →

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

Reading time8 min
Views224K
Три года назад стал претворять свою давнюю мечту в реальность — максимальная домашняя автоматизация квартиры, купленной в новостройке с нуля. При этом «отделку от застройщика» пришлось принести в жертву умному дому image и полностью переделать, а вся электрика, не связанная с автоматикой приехала с известного китайского сайта. Паяльник не потребовался, но знающих мастеров, электриков и плотников пришлось искать долго.


Панель управления квартирой в феврале 2020 года (Home Assistant)

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...

Создаём WEB адресный справочник PHP + LDAP

Reading time7 min
Views18K
Так случилось, что у (относительно) большой кампании было много отдалённых офисов, в которых находилось приличное количество пользователей. Все офисы соединены в одну сеть с общим доменом, каждый офис был определён в Active Directory (далее по тексту AD) как Organization Unit (OU), в котором уже заводились пользователи.

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

Information

Rating
5,632-nd
Date of birth
Registered
Activity