Search
Write a publication
Pull to refresh
53
0.1

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

Send message

ODROID-C1 — форма от Raspberry Pi B+, 4 ядра по 1500MHz, 1GB и цена $35

Reading time2 min
Views37K
Корейские ребята из компании Жёсткоеядрышко (Hardkernel) выпустили в жизнь свой новый микрокомпьютер ODROID-C1, который сделан по подобию Raspberry Pi B+ в том же формфакторе и с тем же разъёмом GPIO. При этом, он обладает четырёхядерным процессором Cortex-A5 с частотой 1,5GHz, 1GB DDR3, гигабитной сетевой картой и прочими прелестями, которые заметно превосходят возможности малинки.

image

Немного предыстории


Ещё до этого Hardkernel выпустила ODROID-W, который имел тот же процессор от Broadcom, что и малинка, был программно совместим, а главным отличием были значительно меньшие размеры платы, особенно в высоту. Но ребятам, которые пекут малиновые пироги, это не понравилось и Broadcom запретила продавать Hardkernel свои процессоры. Была выпущена только одна партия ODROID-W. Её анонсировали в июле, а уже в сентябре появилось сообщение об отказе Broadcom в поставках.

Теперь же, Raspberry Pi B+ получил серьёзного конкурента, и хотя корейский вариант и менее известен, но он хорошо подходит тем, кому, как минимум, нужно больше производительности.

Сравнение и подробности

Бездисковая загрузка по технологии iSCSI на базе ОС Windows

Reading time11 min
Views147K
Написанию данного поста предшествовало сбор информации по частям и многочасовое курение как русскоязычных, так и англоязычных ресурсов в сети интернет в поиске сравнительно простых способов реализации бездисковой загрузки ПК.

Предпосылкой к изучению данного вопроса стало наличие в сети компьютера, с вышедшем из строя дисковым накопителем. Необходимо было запустить на данном ПК «полноценную» 64-битную операционную систему Windows 7 без использования Linux-сервера, ограничившись только имеющимися в локальной сети Windows системами. Приводимые в данном посте программные продукты распространяются бесплатно и могут работать как на серверных, так и на пользовательских версиях Windows.

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

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

Reading time19 min
Views258K
Есть один курс, который я бы добавил в программу обучения по всякой инженерной специальности, и он не о компиляторах или сложности алгоритмов. Это “Введение в реальность индустрии”, ибо об этом не говорят и это приводит к никому не нужным обломам. Эта статья претендует стать README.txt для молодого инженера в деле построения карьеры. Ее цель — сделать вас счастливее, заполнив пробелы в образовании относительно того, как работает реальный мир. Я не призываю следовать написанному как подробному руководству, но я надеюсь, что эта информация окажется для вас более ценной, чем то ничто, что вам рассказали об этом в университете.
Читать дальше →

Размышления о стандартной библиотеке JavaScript. Core.js

Reading time64 min
Views105K
Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета

К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.

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

Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.

Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.

Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.

Содержание, или что получим на выходе:


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

Компактная реализация RSA для встраиваемых применений

Reading time15 min
Views61K
RSA является широкоизвестным алгоритмом шифрования с открытым ключом. На его основе, кроме асимметричного шифрования, можно также реализовать электронную подпись (ЭЦП). Эти возможности привлекательны для встраиваемых систем, микроконтроллеров. Сам метод шифрования с виду чрезвычайно прост:
C = (Me) mod n (1)
где C,M,e,n — целые числа, M — открытый текст, числа e и n представляют собой открытый ключ, C — шифротекст. mod — остаток от деления.

Расширование выглядит столь же просто:
M = (Cd) mod n (2)
где C,M,n играют ту же роль, что и при шифровании, d — закрытый ключ.

При этом n=p*q, где p и q — простые числа (секретные), e обычно равно 65537, d вычисляется на основе e, p и q. Криптостойкость основана на том, что для достаточно больших p и q задача разложения n на множители или обращения формулы шифрования без знания p и q не решается за приемлемое время.

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

Как формальный менеджмент целый отдел загубил

Reading time8 min
Views83K


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

Цели: классические. Повысить качество работы, эффективность, вывести отдел на новый уровень в целом.
Читать дальше →

ZBOX PI320: микро-ПК от Zotac с 4-х ядерным Intel Atom за 200 долларов

Reading time1 min
Views14K


Компания Zotac довольно давно анонсировала выход нового миниатюрного ПК с интересной для пользователя конфигурацией. Речь идет о ZBOX PI320, компьютере с 4-х ядерным процессором Intel Atom Z3735F с частотой работы ядра в 1.33 ГГц.

Кроме того, разработчик установил 2 ГБ ОЗУ, а также 32 ГБ флеш-памяти, доступной пользователю. В качестве ОС можно выбрать Windows 8.1, Ubuntu или другой дистрибутив Linux.

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

Что ускоряет принудительная сверхурочная работа

Reading time3 min
Views68K
Многие аутсорсинговые компании грешат тем, что по любому капризу заказчика готовы заставлять (отдельный вопрос могут ли заставить, но это зависит от личностных качеств человека, многие соглашаются) сотрудников работать в выходные, я уверен что это совершенно неразумно почти всегда. Конечно с точки зрения аутсорсера и конкретного менеджера всё выглядит отлично — проект ускоряется, менеджер получает премии за выполнение сроков, заказчик доволен, заказчик платит больше денег, сотрудники получают двойную оплату (правда это в самом лучшем случае). Вроде все должны быть рады.
Читать дальше →

Батники против эксплойтов

Reading time11 min
Views59K
Доброго времени суток, многоуважаемый %USERNAME%. Меня зовут Голованов Сергей, и я всё еще являюсь ведущим вирусным аналитиком в «Лаборатории Касперского». Я понимаю, что название этого поста в корпоративном блоге компании может вызвать смех, грусть, а у некоторых даже эпилептический припадок, но дайте мне всё объяснить.

Я понимаю, что для всех батники выглядят как нечто очень простое и со времен AUTOEXEC.BAT уже практически забытое, в то же время эксплойты, если вы конечно не профессиональный исследователь уязвимостей, выглядят очень сложно и практически неправдоподобно, особенно для некоторых разработчиков. Но! В данном посте я постараюсь перевернуть эти представления и рассказать, что всё как будто наоборот. Батники чуть легче и сильнее по функционалу brainfuck'а, а эксплойты не страшнее сортировки пузырьком на basic'е.

image

(Осторожно! 3 МБ иллюстрированного потока сознания и куча скриптов)
Читать дальше →

Работа без офиса: как наладить и сохранить сплоченность в распределенной команде

Reading time7 min
Views16K
После выхода статьи «Как мы в Alconost организовали работу без офиса» меня часто спрашивают, как сделать так, чтобы удаленные сотрудники работали как единый слаженный механизм. Напомню, в команде Alconost около 20 “непроизводственных” сотрудников (менеджеры проектов, маркетологи, программисты) и более 300 сотрудников-исполнителей (переводчики, редакторы, дикторы, видеодизайнеры). Все работают удаленно, по свободному графику, без контроля отработанного времени.

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

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


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

Децентрализованная биржа — уже полгода в строю

Reading time5 min
Views31K
Привет! Сегодня я расскажу вам про децентрализованную криптовалютную биржу. То есть, технологию, с которой вы можете торговать напрямую с другими пользователями, без необходимости доверять свои средства посреднику-бирже. Да-да, она уже реализована и работает аж с апреля. Называется Asset Exchange.



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

Про NXT уже многие слышали. Вкратце: это не форк Bitcoin, а отдельно написанная криптовалюта, работающая на принципе Proof-of-Stake. Ей уже около года, и подробнее я о ней уже рассказывал почти год назад. На блокчейне NXT уже построены многие интересные фишки:
  • Alias-ы — аналог идеи Namecoin;
  • можно слать и получать шифрованные сообщения на NXT-адрес прямо в клиенте;
  • Asset Exchange — децентрализованная биржа активов, о которой я сегодня расскажу;
  • и даже Digital Good Store — децентрализованная торговая площадка, о которой я расскажу в другой статье.
Читать дальше →

Отладка NDK и JNI под Android

Reading time2 min
Views17K
В данной статье речь пойдет об отладке кода под Android.
За последнее время произошло много подвижек в этом направление. Появился Android Studio, google добавило поддержку отладки нативного кода в eclipse.
Если необходимо отладить только Java, то Android Studio покроет ваши потребности полностью.
Если необходима отладка с++ или Java кода то ADT Bundle со встроенным Eclipse опять же поможет решить вашу проблему.
Если вкратце
  • Дать понять Eclipse что проект содержит нативную часть(Add native support)
  • Убедиться что в команде сборки стоит NDK_DEBUG=1
  • Нажать Debug as Android Native Application

на некоторых девайсах реобходимо еще и поставить в манифесте debuggable в true
Но если необходимо отлаживать jni код, где попеременно работают c++ и Java функции, то вам этот способ не подойдет, потому-что в зависимости от выбранного способа отладки(Android Native Application, Android Application) работает отладка либо с++ либо java кода.
О том как отлаживать смешанный код пойдет речь далее в статье.
Читать дальше →

Как убеждать людей в сети: семнадцать малоизвестных джедайских трюков

Reading time11 min
Views307K


Хотите узнать, как на просторах интернета убеждать людей и получать от них желаемое?

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

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

Универсальный метод обхода запрета Yota раздавать интернет с телефона или собираем модуль ядра Android

Reading time5 min
Views452K

Старые методы и их недостатки


Я думаю, никому уже не интересно читать во второй раз (а может быть и в третий), о том, как Yota определяет, пользуется ли человек телефоном в режиме модема или точки доступа. «Зачем нам ещё одна статья?» — спросите вы.

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

Именно эти причины мотивировали меня копать дальше в поисках ответа на вечный вопрос «Как же всё-таки нахаляву раздать интернет всему офису?». И найти такой ответ удалось (только для android, у меня нет яблока).
Читать дальше →

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

Reading time8 min
Views324K


Более трех лет назад я написал пост о выборе платежной системы для приема платежей на своем прошлом проекте. С тех пор прошло довольно много времени и многое в способах приема платежей изменилось. Теперь я расскажу как делал прием платежей на сайте poiskvps.ru.

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

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


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

Как создать эффективную форму сбора контактов: все, что вы хотели знать, но боялись спросить

Reading time5 min
Views24K
Добро пожаловать в блог компании Witget.com. Продолжаем цикл статей, полезных владельцам сайтов. Формы подписки или формы сбора контактов — своеобразные связующие звенья между владельцем сайта и его потенциальными клиентами. Причем они работают как на тех посетителей сайта, которые всерьез собираются что-то купить, так и на тех, кто зашел, посмотрел, и уже хотел было уйти. Правильно выполненные формы подписки могут заинтересовать даже скептически настроенного пользователя. Но какие же они, эти эффективные формы сбора контактов? И как определить уровень тех, что вы используете на своем сайте? В первую очередь, стоит спросить самих посетителей. В связи с этим публикуем статью Шерис Джэйкоб, основанную на масштабном исследовании форм сбора контактов, при котором было опрошено более 400 тысяч посетителей сайта. Как же поднять конверсию сайта с помощью разных видов форм для заполнения?

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

Почему у нас нет боссов и офиса, и почему мы работаем 4 дня в неделю

Reading time4 min
Views159K


В 2008 мы с партнёром закончили обучение по специальности «компьютерная инженерия» в университете в Аргентине.

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

Поэтому, когда мы делали Project eMT, сравнительный поисковик для Латинской Америки, мы решили работать по-другому: без менеджеров проектов. Через шесть лет у нас в команде было 34 инженера из Чили, Бразилии, Мексики и Колумбии, и мы всё ещё работаем без использования традиционных структур и рабочего графика, а наш ежегодный рост составляет 204%.
Вот как мы это делаем.

LUA в nginx: слегка интеллектуальный firewall

Reading time6 min
Views31K

Данный пост является продолжением применения lua в nginx.

Там обсуждалось кеширование в памяти, а тут lua будет использоваться для фильтрации входящих запросов в качестве этакого фаервола на nginx-балансере. Нечто подобное было у 2GIS. У нас свой велосипед :) В котором разделяем динамику и статику, стараемся учесть NAT и белый список. И, конечно же, всегда можно навернуть еще специфичной логики, что не выйдет при использовании готовых модулей.
Данная схема сейчас спокойно и ненапряжно (практически не сказывается на использовании cpu) обрабатывает порядка 1200 запросов/сек. На предельные величины не тестировалось. Пожалуй, к счастью :)
Читать дальше →

Пара полезных команд, которые могут пригодиться при DDoS и не только

Reading time3 min
Views82K
В моем случае, в качестве frontend сервера, стоит nginx и формат access-лога имеет вид:

log_format main '$remote_addr — $remote_user [$time_local] "$host" "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" -> $upstream_response_time';

Что на выходе дает что-то вроде такой строки:

188.142.8.61 — - [14/Sep/2014:22:51:03 +0400] «www.mysite.ru» «GET / HTTP/1.1» 200 519 «6wwro6rq35muk.ru» «Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.191602; .NET CLR 3.5.191602; .NET CLR 3.0.191602» "-" -> 0.003

1. tail -f /var/log/nginx/nginx.access.log | cut -d ' ' -f 1 | logtop

Позволяет получить общую картину: распределение уникальных IP, с которых идут запросы, кол-во запросов с одного IP и т.д.
Самое ценное — что все это работает в режиме реального времени и можно мониторить ситуацию, внося какие-либо изменения в конфигурацию (например просто забанить ТОП 20 самых активных IP через iptables или временно ограничить географию запросов в nginx через GeoIP http://nginx.org/ru/docs/http/ngx_http_geoip_module.html).
Читать дальше →

Разработка VPN-клиента под Android (Часть 1)

Reading time10 min
Views58K
Всем привет! Поводом к написанию данной статьи стало осознание того факта, что при наличии большого количества статей и обзоров про приложения VPN-клиенты для Android, нет ни одной нормальной статьи описывающей проблемы разработки с использованием VpnService API. Причём, в большинстве случаев вы, как разработчик приложения, не сможете ничего сделать с этими проблемами.
Читать дальше →

Information

Rating
6,341-st
Location
Bratislava, Bratislava, Словакия
Date of birth
Registered
Activity