Pull to refresh
24
0
Arsen Adzhiametov @Kalpazan

Java Software Engineer

Send message

Роботаракан Петя за десять баксов

Reading time 10 min
Views 29K

Знакомьтесь с Петей, шестиногом о трёх сервоприводах


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


Читать дальше →
Total votes 104: ↑104 and ↓0 +104
Comments 48
Если дома мы можем сами определять конфигурацию рабочего места, то в компаниях по-разному подходят к офисному проектированию. Где-то размышляют утилитарно и ставят обычные noname офисные столы рядами, как скамьи для гребцов на галере. Как итог — работать в таком офисе становится неприятно. А если попробовать что-то особенное? Повлияет ли это на продуктивность и насколько такой подход оправдан?
Подробности — под катом
Total votes 44: ↑41 and ↓3 +38
Comments 218

MikroTik и блокировка нежелательных сайтов (на примере youtube и facebook)

Reading time 3 min
Views 184K


На написание данной статьи меня сподвиг тот факт, что старший ребенок стал по ночам вместо того чтобы укладываться спать, смотреть на своем смартфоне всякие ролики на youtube, до поздней ночи, а так же замена домашнего роутера с TP-Link TL-WR1043ND на MikroTik RB951G-2HnD.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 79

Удалённое включение скриптов Mikrotik из Telegram

Reading time 6 min
Views 58K
На данную реализацию меня подтолкнул Александр Корюкин GeXoGeN своей публикацией "Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik".

И комментарий в одной из групп ВК Кирилла Казакова:
Да уж, совсем не секьюрно. Я бы лучше написал телеграм бота, который принимает только с моего аккаунта команды на включение.

Я решил написать такого бота.
Читать дальше →
Total votes 40: ↑37 and ↓3 +34
Comments 35

Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik

Reading time 3 min
Views 106K
… а также без проброса портов, SSH/telnet и установки сторонних приложений. С любого компьютера, подключённого к интернет и даже с телефона!

Периодически мне бывает нужно включить домашний компьютер, когда я нахожусь не дома. Обычно я не запаривался и звонил или отправлял сообщение с такой просьбой жене, которая сидит дома в декрете. Очень удобное средство удалённого управления с голосовым интерфейсом. Однако у этого способа есть ряд недостатков — ушла гулять, укладывает ребёнка, или ещё чем либо занята. Хотелось простого решения из того что есть под рукой.
Тыкни меня!
Total votes 30: ↑24 and ↓6 +18
Comments 69

Хостим персональный сайт на роутере

Reading time 3 min
Views 125K
Доброго времени суток.

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

Поразмыслив, я вспомнил интересную статью о настройке сервера ip-телефонии Asterisk на маршрутизаторе Mikrotik. Так как у меня дома установлен роутер именно этого проиводителя, не раздумывая, я решил поднять на нём веб-сервер nginx.
Читать дальше →
Total votes 37: ↑28 and ↓9 +19
Comments 52

Как два программиста хлеб пекли

Reading time 5 min
Views 259K


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

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →
Total votes 380: ↑348 and ↓32 +316
Comments 328

Подготовительный этап разработки программного обеспечения

Reading time 30 min
Views 53K
Если вы не знаете, в каком направлении развивать проект, то он вряд ли выберет нужный путь самостоятельно.
Стив Макконнелл

Введение


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

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

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

Для достижения поставленных целей заказчику и исполнителю совместно нужно решить ряд вполне определённых задач:

  1. На основе исходной идеи сформулировать цели и задачи будущего проекта.
  2. Разработать некоторое исходное видение – концепцию проекта.
  3. Провести анализ востребованности будущего продукта.
  4. Провести предварительную оценку рисков будущего проекта.
  5. На основе концепции и списка предварительных рисков подготовить предварительное техническое решение.
  6. Выбрать методологию разработки и подготовить предварительный план работ.
  7. Провести предварительную оценку трудозатрат и необходимых ресурсов.
  8. Провести анализ реализуемости продукта.
  9. Провести независимое рецензирование технического решения.
  10. Принять решение о том, стоит ли продолжать работы.

Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Comments 0

Прототип. От идеи до опытной партии. Литье в силикон

Reading time 2 min
Views 182K
В прошлой статье я описал мой путь по созданию опытной партии изделия, в ней я литье в силикон отдал на аутсорс. Пока я ждал выполнения моего заказа, потихоньку сам начал осваивать это ремесло. Статья будет полезна тем, у кого допустим есть плата какого-нибудь девайса, но нету красивого корпуса, 3д-печать не подходит по характеристикам, а делать сразу промышленную пресс-форму очень дорого.


Читать дальше →
Total votes 168: ↑166 and ↓2 +164
Comments 75

Компиляция Try/Catch/Finally для JVM

Reading time 7 min
Views 22K

Вместо введения


Автор статьи, Alan Keefer1, является главным архитектором компании Guidewire Software2, разрабатывающей программное обеспечение для страхового бизнеса. Еще будучи старшим разработчиком, он участвовал в работе над языком Gosu3. В частности, Алан занимался вопросами компиляции языка в байт-код Java.

Данная статья написана в 2009 году и посвящена деталям реализации try/catch/finally в JVM версии 1.6. Для ее прочтения необходимо иметь базовые знания синтаксиса Java, а также понимать назначение байт-кода, простыни которого лежат под катом. Также в конце статьи приведен ряд примеров, похожих на каверзные задачи SCJP.

Внутренности JVM


Одной из вещей, над которой по целому ряду причин мы сейчас работаем, является компиляция нашего «домашнего» языка в байт-код Java. (Для справки: не могу сказать, когда мы закончим. Даже примерно. Даже попадет ли он в будущие релизы.) Веселье заключается в изучении внутренностей JVM, а также поиске всех долбанутых острых углов собственного языка. Но больше всего «веселья» и острых углов доставляют такие операторы, как try/catch/finally. Поэтому, на этот раз, я не буду вдаваться в философию или аджайл. Вместо этого я углублюсь в JVM, куда большинству не требуется (или не хочется) углубляться.

Если бы две недели назад вы спросили меня о finally-блоках, я бы предположил, что их обработка реализована в JVM: это базовая часть языка, она должна быть встроенной, не так ли? Каково же было мое удивление, когда я узнал: нет, не так. На самом деле finally-блоки просто подставляются во все возможны места после try- или связанных с ним catch-блоков. Эти блоки оборачиваются в «catch(Throwable)», который повторно выбросит исключение после того, как finally-блок закончит работу. Осталось только подкрутить таблицу исключений, чтобы подставленные finally-блоки были пропущены. Ну как? (Небольшой нюанс: до версии JVM 1.6 для оператора finally, по всей видимости, использовались подпограммы вместо полной подстановки. Но сейчас мы говорим о версии 1.6, к которой все вышесказанное применимо.)
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Comments 15

Секс и насилие в Google Play

Reading time 1 min
Views 342K
Последнее время google систематически удаляет приложения за секс и насилие, без пояснения причин и не вступая в диалог с разработчиками.

Окей, гугл. Давайте проведем небольшой социальный эксперимент.

Я установил на смартфоне доступ к контенту для младшей возрастной группы и зашел в несколько приложений от производителя Google Inc.
посмотрим, что из этого получится
Total votes 419: ↑371 and ↓48 +323
Comments 147

Деньги с AdSense теперь можно выводить напрямую на банковский счет

Reading time 1 min
Views 30K
Зайдя в панель управления Google AdSense сегодня утром обнаружил, что можно выводить деньги напрямую через банковский счет, а не через Рапиду. Аккаунт зарегистрирован в России. Вероятно, теперь можно получать выплаты в долларах и экономить 2% на выводе с Рапиды.
Читать дальше →
Total votes 24: ↑19 and ↓5 +14
Comments 33

Андроид: [DirectoryBind] Простой способ связать внешнюю sd карту и внутреннюю память, чтобы освободить место

Reading time 4 min
Views 776K
Сразу оговорюсь, что речь пойдет не о программах типа link2sd. Принцип похож, но связывать мы будем не программные каталоги, а каталоги данных этих программ, например /sdcard2/Navigon -> /sdcard/Navigon или /mnt/extSdCard/Books -> /sdcard/Books и т.д.
Кроме того, нам нужен рут (куда ж без него). Кстати, после того как я узнал про эту программу, это для меня очередной аргумент за root.

Многие владельцы андроид смартфонов или таблеток с небольшей встроеной памятью наверняка сталкивались со следущей проблемой: вставлена большая sd карта (например 16, 32 или даже 64 Гигабайт), но после установки нескольких тяжеловесных программ наше устройство или очередная программа с наглостью заявляет, что на карте не хватает места. Иногда сама программа небольшая, но после установки лезет в интернет и тянет на смартфон гигабайты данных.
В очередной раз получив сообщение «Нет места» и заглянув на карточку видим, что она практически пуста, зато внутренняя память устройства забита под завязку.
Это происходит потому, что внутренняя память часто используется как каталог по умолчанию для многих программ. Дело в том, что она монтируется как /sdcard, что исторически всегда было внешней sd картой (раньше так оно и было на всех смартфонах). Внешняя же sd карта монтируется в этом случае как /sdcard2, /mnt/sdcard2, /mnt/extSdCard или даже /sdcard/.externalSD. Я так понимаю, что это делается изготовителями, чтобы устройство работало из коробки, т.е. совсем без sd карты.

Многие «недобросовестные» программы всегда хотят читать/писать данные из/в каталог /sdcard/НазваниеПодставить. Редко это можно изменить в настройках программы.
В результате имеем, что имеем, и несколько возможностей чтобы поправить сложившееся положение:
  • перемонтировать каталоги: внешнюю sd карту на /sdcard, а внутреннюю на /sdcard2 (нужен рут, если нет в настройках). По моему недостаточно гибкий способ, т.к. теперь уже внутренняя память лежит у нас мертвым грузом. Еще один недостаток этого способа — скорость работы системы.
    Если вы все же решитесь пойти этим путем, внизу я добавил как это можно сделать.
  • создать символьную ссылку на внешние каталоги, как нам нужно, например
    ln -sf /mnt/externalSD/Books /sdcard/Books.
    Не работает, если файловая система не поддерживает симлинк (например fat).
  • при загрузке андроида примонтировать внешние каталоги на внутреннюю память, используя что-то типа
    mount -o bind /mnt/externalSD/Books /sdcard/Books
    и добавить это в автозагрузку, например используя Autostart (root), чтобы это происходило автоматически при включении или после перезагрузки устройства.

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

Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 24

Если бы языки программирования были девушками…

Reading time 2 min
Views 81K
Image #1602564, 172.6 KB

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

Читать дальше →
Total votes 164: ↑94 and ↓70 +24
Comments 114

Аскетичный ридер за 9.90 евро

Reading time 1 min
Views 121K


Немецкий разработчик электронных книг Txtr на Всемирной книжной ярмарке в Франкфурте представил своё видение популярных ридеров — читалка Beagle с E-Ink экраном размером в 5 дюймов, разрешением экрана 800×600, весом в 128 грамм и толщиной немногим менее 5 мм за 9.90 евро.

Устройство обладает внутренней памятью в 4 Гб (поддержки карт памяти нет) и Bluetooth. Всё — больше ничего, кроме экрана и пары AAA-батареек, которые должны работать целый год, нет. Экран ридера также не реагирует на касания пальцами — для работы предусмотрены три аппаратных кнопки. Ни зарядок, ни каких-либо кабелей к ридеру не существует.

Для обмена книгами с устройством и синхронизации предлагается использовать приложение txtr ebooks (есть и для iOS), которое на обычном смартфоне или планшете позволит выбрать необходимую книгу ( их более 700 000, DRM не забыли, форматы EPUB и PDF) и отправить её по Bluetooth на Beagle.

Продажи планируются по всему миру, начиная от Европы и заканчивая США и Азией.
Источник
Total votes 107: ↑99 and ↓8 +91
Comments 101

Curiosity — первые 50 дней на Марсе

Reading time 3 min
Views 96K
Мы решили примерно раз в неделю делать обзоры про текущие исследования Curiosity на Марсе. Но так как уже два месяца прошло, в первых постах пробежимся быстренько, чтобы догнать текущий момент.

Итак, 6 августа 2012 года на планету Марс совершил успешную посадку марсоход MSL Curiosity. Первый его кадр, переданный на Землю, вызвал волну радости и воодушевления у специалистов NASA:


Далее про первые 50 дней Curiosity на Марсе, с фотографиями, панорамами и иллюстрациями
Читать дальше →
Total votes 269: ↑266 and ↓3 +263
Comments 88

Развитие правого полушария головного мозга или как я учился рисовать

Reading time 4 min
Views 87K
Сразу дискламер: я редко пишу посты на широкую аудиторию, и более правильного ресурса для этого текста в рамках моего кругозора не нашлось. Тем не менее, если кто-то найдет это интересным, значит не зря… Поехали.

С чего все началось



Как-то я услышал от одного человека мысль о том, чтобы заниматься бизнесом, ему приходится «выращивать в себе Мистера Хайда», типа некая альтернатива его личности способна придумать что-то такое, что не способен придумать он сам. Конечно же, он шутил, по большей части, и тогда я этому значение не придал. Вспомнил эту точную метафору лишь, когда сам решил, что мне нужно развивать креативность, умение продуктивно фантазировать, придумывать нестандартные решения.
Читать дальше...
Total votes 163: ↑156 and ↓7 +149
Comments 84

12 сентября. Сан-Франциско. Центр искусств Йерба Буэна. Live-трансляции — чего изволите?

Reading time 1 min
Views 77K


Хабрачитатель! Это случится сегодня. В День Программиста.
12 сентября 2012 года. В 21:00 по Москве. В 20:00 по Киеву.

Продолжая эстафету анонсов live-трансляций — коротко и без хабраката — встречайте:

Русскоязычные трансляции:





Англоязычные трансляции:





Читать дальше →
Total votes 70: ↑54 and ↓16 +38
Comments 72

«All day phone» — Motorola обновила линейку RAZR

Reading time 2 min
Views 39K
В тот же день, когда Nokia презентовала свои новые смартфоны, Motorola провела свою пресс-конференцию, на которой представила обновлённый модельный ряд семейства RAZR со следующими названиями — RAZR Maxx HD, RAZR HD и RAZR M и со слоганом "All day phone". Общим для всех моделей является поддержка сетей четвертого поколения, Android 4.0 с обещанным дополнением до более новой версии Jelly Bean (если вдруг что-то пойдёт не так, что производитель обещает каждому покупателю по 100 USD) и и солидное время работы без подзарядки.

Узнать подробности
Total votes 25: ↑21 and ↓4 +17
Comments 90

Google пытается сохранить 3054 языка, находящихся на грани исчезновения

Reading time 1 min
Views 4.6K


Будет ли вам плохо от того факта, что люди перестанут говорить на арагонском? А как насчет Навахо или Оджибве? Или Коро, язык, который не так давно был открыт на северо-востоке Индии?

Вам-то, понятно, скорее всего, будет пофиг. Но вот для человечества в целом это довольно негативная тенденция. Как и для науки и искусства. По прогнозам ученых, к 2100-му году 3054 языка перестанут существовать. А это — половина всех языков мира.
Читать дальше →
Total votes 71: ↑63 and ↓8 +55
Comments 375

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity