Pull to refresh
66
0.4
Григорий Клюшников @grishkaa

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

Send message

Сварка оптических волокон. Часть 2: сварочные аппараты и скалыватели, механическое и сварное сращивание, отмеривание и укладка волокон

Reading time45 min
Views305K

Обломанное оптическое волокно под микроскопом

Здравствуйте, читатели Хабра!

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

Часть 1 здесь
Часть 3 здесь

Осторожно: много текста и трафика!

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

Первые несколько миллисекунд HTTPS соединения

Reading time10 min
Views172K
После нескольких часов чтения обзоров, Боб с нетерпением нажал на кнопку перехода к оформлению заказа на галлон цельного молока, и…
Воу, что только что произошло?


Интересно? Прошу под кат

Пишем приложения для Google Glass

Reading time7 min
Views18K
Несколько дней назад я имел возможность основательно попрактиковаться в разработке приложений для Google Glass. Полученный опыт растеряется со временем, так как пока разрабатывать что-то ещё под “очки” не планирую. Чтобы поделиться пока ещё свежими впечатлениями решил написать этот топик.
Думаю, всем кто интересуется Google Glass известно, что представляет собой программная “начинка” этого гаджета. Да, это Android 4 с адаптированным launcher-ом. Да, в “очках” вполне можно запускать обычные android-приложения, установив их туда через adb. Известно вам наверняка и про Mirror API, который до недавнего времени считался единственным способом официально предоставить свой сервис пользователю Google Glass. Ниже я немного расскажу о использовании этого инструмента. Но главное, о чём хотелось бы рассказать — как писать под Google Glass полноценные android-приложения, используя пока ещё не официальный Glass Development Kit.
Читать дальше →

Основы IP-телефонии, базовые принципы, термины и протоколы

Reading time16 min
Views548K

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

Создание нестандартного компонента с нуля. Часть 1

Reading time11 min
Views39K

Вступление


Приветствую, коллеги!

Достаточно часто при разработке мультимедийных Андроид-приложений (далее просто “приложений”) мы сталкиваемся с задачей создания собственных компонентов, не предусмотренных в системе. Это могут быть всяческие ручки-переключатели, визуализаторы спектра и т. п. Некоторые из них могут быть получены простой заменой графического ресурса, поворотом канвы на 90 градусов и т. п. Но, иногда, все же приходится делать что-то свое “с нуля”.
В этой статье я собираюсь рассказать о создании компонента — простой клавиатуры фортепиано, при помощи наследования от класса View и реализации всех внутренностей “самостоятельно”. Почему в кавычках — увидите дальше.

В серии статей я постараюсь осветить такие вопросы, как:

  1. отрисовка компонента
  2. добавление скроллинга с использованием стандартных скроллбаров
  3. взаимодействие, использование селекторов для клавиш
  4. Сохранение состояния компонента при повороте экрана
  5. добавление подсветки при оверскролле
  6. передача параметры в XML
  7. pinch zoom


Первая статья будет о первых трёх пунктах.

Если Вам интересны эти темы, добро пожаловать под кат.
Читать дальше →

Разбираем HTTP Range по стандарту

Reading time3 min
Views34K
В одном из проектов мне понадобилось разобрать HTTP Range запрос, чтобы добавить поддержку загрузки файлов по частям. В сети полно различных примеров, но я так и не нашел ни одной полной реализации RFC 2616. Один код не учитывал, что диапазонов может быть несколько, другой, что стандарт допускает запросы больше размера документа, третий не различает синтаксически правильный и недостижимый запрос, как рекомендует стандарт. Поэтому я решил написать свою реализацию и поделиться со всеми. Подробности и пример реализации на PHP под катом.
Читать дальше →

Как бороться с низкокачественными Android приложениями

Reading time5 min
Views58K
Все согласны, что Google Play переполнен некачественными приложениями, но никто не хочет брать вину на себя — принято винить абстрактный Android или просто Google, который выпустил систему без строгих гайдланов, создал маркет без модерации и дал возможность производителям делать свои оболочки с разноцветными иконками и градиентами.

Но каждый день выходят новые приложения с дизайном из iOS, темами из 2.3, не адаптированные для планшетов и с размытыми картинками на HD-экранах. И в этом виноват не Google, а разработчики. Кто-то не пытается спорить, когда заказчик присылает макеты от iOS версии, кто-то пытается, но сдается. Кто-то разрабатывает приложение ради опыта, откладывая «неважное» на потом, и так оно и остается. Стартапы делают приложения «за день», а потом лихорадочно фиксят баги, создавая снежный ком, который уже никто не перепишет с нуля. Крупные социальные сети, имея деньги и время, каким-то образом умудряются выпускать ужасные клиенты…
Читать дальше →

19 команд ffmpeg для любых нужд

Reading time3 min
Views583K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →

Создание гостевого доступа в Интернет с Web-аутентификацией

Reading time8 min
Views41K
Приветствую, коллеги.

Пролог


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

Основными требования:


Ресурсы на создание – как человеческие (рабочее время), так и материальные – минимальны.
Нагрузка – маленькая. Обычно такой системой будут пользоваться не более 10 человек в день.
Критичность доступности – низкая. Если система сломалась – то ремонтировать будут в последнюю очередь. Потеря нескольких пакетов – не принципиальна.
Изолированность – полная. Если сломают какие-либо части – локальная сеть не должна пострадать.
Платформонезависимость – клиентами будут всякие гаджеты – от телефона до большого компа.
Читать дальше →

JAVA библиотека padeg — новогодний подарок хабру

Reading time4 min
Views26K
Да-да, это та самая библиотека padeg.dll, но работающая везде где есть java. Авторы Sergey V. Plahov aka Seer and Gennady Pokatashkin
Собственно, история простая. Началась она в 2007 году, когда мне срочно понадобилось склонять ФИО и должности для одного корпоративного проекта. В принципе, данный функционал не стоял в требованиях заказчика, но нужны были «плюшки», и автоматические склонения — это как раз одна из плюшек.
Довольно быстро удалось связаться с одним из авторов библиотеки, и после перечисления небольшой суммы были получены исходники на Delphi, которые затем портировались в JAVA. По первоначальной задумке java и delphi исходники должны были максимально совпадать, чтобы впоследствии можно было вносить параллельные правки. Делалось так: брались исходники на delphi, менялись расширения pas→java, и добавлялись в проект. Дальше шла правка синтаксиса. Но фактически delphi — код пришлось сильно рефакторизовать, поскольку он состоял в основном из многоэтажных if-ов и внутренних процедур, содержал глобальные переменные и не был приспособлен для многопоточной работы.
Как бы там ни было, библиотека портирована. На вопрос о копирайте мне было разрешено делать с результатом что угодно, но поскольку delphi-библиотека распространялась на условиях shareware, я не стал публиковать java-порт.
С тех пор прошло 5 лет, и я думаю, хватит одному пользоваться инструментом, которой найдется применение в хозяйстве отечественного java — разработчика. К тому же праздник на носу. Поэтому загружайте
Читать дальше →

Манифест Мастера / The Fixer’s Manifesto

Reading time2 min
Views186K


От переводчика: недавно я купил часы с лазерным проектором и прочёл в инструкции привычную фразу: «Запрещено ремонтировать самостоятельно». Раньше в инструкциях писали, что при самостоятельном ремонте производитель отказывается от гарантийных обязательств. Это наглость, но можно понять. Сейчас они прямо запрещают разбирать устройство, даже не объясняя почему. То есть просто выкинь и купи новое. Полный беспредел потребительской культуры.

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

Ключевые люди по тегу #AndroidDev

Reading time3 min
Views16K
image
Часто замечаю, что большинство программистов, разрабатывающих приложения для Android, не в курсе последних новостей Android Community. Если о появлении новой версии ОС знают практически все, то выход различных полезных библиотек или интересных для разработчиков статей часто остается незамеченным.

За последний год у меня сформировался список контактов в соц. сетях наиболее известных личностей из Android Community. Эти люди регулярно пишут статьи, публикуют библиотеки, отвечают на StackOverflow и т.д. Подобный список помогает одному из первых узнавать новости сообщества Android Developers, поэтому решил поделиться им здесь.
Читать дальше →

Пишем эмулятор Gameboy, часть 2

Reading time21 min
Views13K
Здравствуйте!

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

Пишем эмулятор Gameboy, часть 1
Пишем эмулятор Gameboy, часть 2
Пишем эмулятор Gameboy, часть 3
Читать дальше →

Создание красивого образа .dmg для программы в [Mac] OS X

Reading time6 min
Views29K
Приветствую достопочтенных жителей Хабра!

Сегодня я расскажу вам о том, как красиво преподнести пользователю инсталлятор своей программы. Наверняка каждый, кто пользуется не только программами из AppStore, сталкивался с красивыми образами диска .dmg, как вот у Адиума, к примеру. Такой образ представляет из себя, так сказать, интерактивный инсталлятор, в котором дана чёткая подсказка: перетащи значок вот сюда. Всё предельно понятно и просто.

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

Можно, конечно, проделать это всё вручную, но это не_наш_метод™, так что мы будем писать shell-скрипт для автоматизации сего процесса. Автоматизация нам так же пригодится в случае ввода в эксплуатацию билд-сервера, тогда этот сервер будет не только собирать программу из исходников, но и делать образ диска для дистрибьюции.

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

«Герои мата и меха» портированы на javascript

Reading time1 min
Views43K
← жать на картинку, это зеркало для хабраэффекта

«Герои матмеха» или «Сдать сессию и остаться в живых». Остросюжетный пошаговый симулятор студента матмеха СПбГУ портирован из глубины веков (98 год) на Javascript и доступен прямо из браузера. Этот квест будет интересам студентам смежных инженерных профессий. Выдержка из документации к оригиналу:
«Эта программа - некоторый синтез всех тех эмоций, что получил автор, пытаясь (с грехом пополам) выйти на сессию в конце второго семестра первого курса на мат-мехе. Правда, при этом автор находился в более выгодном положении, чем Вы - центральный персонаж этой игры, которому предстоит получить зачёты по 6-ти предметам практически с нуля.»



О процессе портирования и о авторах

Прошиваем AVR вручную

Reading time6 min
Views216K

Картинка для привлечения внимания — xkcd

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

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

Как же прошить МК фактически голыми руками?
Читать дальше →

Firefox 15 поддерживает свободный аудиоформат Opus

Reading time2 min
Views5.3K
В браузере Firefox 15 (бета-версия) реализована поддержка свободного аудиоформата Opus. Этот кодек недавно приняли для рассмотрения в качестве стандарта организацией IETF, он качественно превосходит любые другие стандарты кодирования и передачи звука.


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

Как сделать swipe-to-dismiss на Андроид

Reading time1 min
Views5.3K
Привет,

Вот может кому пригодится… Roman Nurik разработчик из Google выложил пример кода как можно сделать swipe-to-dismiss на Андроид.

Не совсем уверен как это перевести на русский… Что-то вроде — «Удаление сдвигом». Т.е. когда вы удаляете элемент из списка сдвигая его в сторону. Вот как это выглядит на экране:

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

Основы работы с IOKit. Тонкости программирования драйверов

Reading time8 min
Views20K

В рамках поддержки блога разработки под Mac OS X, я представляю свою статью о низкоуровневой разработке под Mac OS X. Обычно тема разработки драйверов не столь популярна, однако и здесь Mac OS X выгодно выделяется из ряда прочих операционных систем. Да, писать драйвера для Mac O S X – просто! Проще чем когда-либо ранее!
Поехали

Android SDK: боремся с ограничением размера памяти для картинок

Reading time5 min
Views16K
В графическом приложении для рисования используется SurfaceView и пара Bitmap размером с экран (например, я хочу изобразить плавное листание страниц книги).

На многих устройствах с большим разрешением экрана приложение падает c ошибкой
AndroidRuntime: java.lang.OutOfMemoryError: bitmap size exceeds VM budget

Проблема в том, что память для Bitmap, а также для SurfaceView резервируется из общей кучи процесса. Лимит размера кучи — невелик, как правило немногим больше 10Мб. И задается этот лимит при сборке системы.

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

Ограничение размера графических буферов программы в 3-4 экрана — это до обидного мало! Попробуем исправить такую несправедливость.
Читать дальше →

Information

Rating
3,471-st
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity