Search
Write a publication
Pull to refresh
76
0
Zaur Nasibov @BasicWolf

Software Engineer

Send message

Восстановление данных из внутренней памяти на Android для чайников

Reading time5 min
Views396K
Сейчас всё больше смартфонов идут без слота для sd-card, и информацию приходится хранить на встроенной памяти с доступом к ней по MTP. Такой режим подключения не позволяет стандартными средствами восстановить данные телефона после wipe’а или случайного удаления.

Сегодня на примере связки Xiaomi Mi2s и Windows 8.1 я постараюсь рассказать, как можно восстановить утерянные данные, кому интересно, добро пожаловать под кат.
Читать дальше →

Путь фрилансера. Часть 1. Советы новичкам

Level of difficultyEasy
Reading time11 min
Views245K


Доброго времени суток, друзья, люди, фрилансеры, инопланетяне.

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

Вкратце в двух словах о себе и прочем чтобы пост имел некоторую большую содержательность: на фрилансе 3 последних года с копейками. Работаю не один. Команда. Объединены интернетом и рамками СНГ. Большинство никогда не видел и даже с ними ни разу не созванивался. Офиса нет. С одним из таких граждан общаюсь и работаю уже лет 5-6. Как это ни странно барьером это не послужило. Знакомых, друзей, бывший сотоварищей по работе в команде нет и никогда не было, как и не было этой самой другой работы. Да, есть и такие странные люди на свете, кто никогда не работал в офисе и ничем иным не занят и это ни разу мне не помешало, а скорее наоборот.

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

URL.js или дружим JavaScript с обработкой ссылок

Reading time8 min
Views50K
image

Доброго времени суток, уважаемые хабравчане!

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

Итак, к делу.

Задача и проблемы


Проблемы — те же что и в посте, который я привел выше:
  • Невозможность использовать window.location для «приготовления» URL;
  • Нельзя работать сразу с несколькими window.location в силу политики безопасности браузеров;
  • Отсутствие известных готовых решений ( да и сейчас, уже апосля, я не нашел подобного кода )

Задачи которые я поставил перед собой:
  • Удобный синтаксис
  • Возможность как читать части URL так и изменять их
  • Работа с GET-параметрами
  • Кроссбраузерность и универсальность


Писал я на чистейшем JavaScript, причем без использования prototype.__defineGetter__ или prototype.__defineSetter__ в угоду кроссбраузерности ибо IE < 9 такого не умеет. Более подробно про getters/setters написано в этом посте.

Для тех кому интересно — сядем разберем, а кому надо готовое решение — милости прошу в конец поста, ссылки на скачивание — там.

Приступим! Раньше сядем — раньше выйдем.
Читать дальше →

Разделяй и властвуй: как мы реализовывали разделение сессий на портале Mail.Ru

Reading time7 min
Views42K


Mail.Ru — огромный портал, существующий более 15-ти лет. За это время мы прошли путь от небольшого веб-проекта до самого посещаемого сайта рунета. В состав портала входит огромное количество сервисов, у каждого из которых своя судьба, и над каждым из которых работает отдельная команда. Разработчикам пришлось как следует потрудиться, чтобы на всех проектах — и новых, и старых, и тех, которые присоединились к порталу по мере его развития, — использовалась единая система авторизации. А через много лет перед нами встала фактически обратная задача: разделить пользовательские сессии. О том, зачем мы это делали, какие трудности нас ожидали и как мы их обошли, я расскажу в этом посте.
Читать дальше →

Функторы, аппликативные функторы и монады в картинках

Reading time5 min
Views195K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


Теперь, когда вы примените функцию к этому значению, результаты вы будете получать разные — в зависимости от контекста. Это основная идея, на которой базируются функторы, аппликативные функторы, монады, стрелки и т.п. Тип данных Maybe определяет два связанных контекста:


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →

5 советов по выбору SSD

Reading time4 min
Views110K
Корпоративные пользователи часто сталкиваются с дилеммой, когда возникает вопрос, на чём хранить свои данные и запускать приложения. Во многих случаях необходимо сбалансировать потребность в быстром, надежном, устойчивом хранении и ограниченный бюджет. Время от времени это приводит ИТ-менеджеров к выбору низкопробных SSD накопителей, которые укладываются в бюджет. Они предполагают, что заявленные скорости и объёмы идеально подойдут для выполнения любого рода задач. Но не стоит так торопиться.

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

История Аудиомании. Часть 1

Reading time11 min
Views17K


История Аудиомании – рассказ о том, как компания из небольшой «точки», продающей бытовую технику, превратилась в одного из крупнейших всеканальных ритейлеров в России. Мы постараемся просто и правдиво написать о том, как маленький магазин стал большой компанией, как наши увлечения стали частью нашей профессии, какие сложности и подводные камни (в условиях российской действительности) сопровождали нас на этом пути – и какие советы мы можем дать начинающим интернет-ритейлерам на основе собственного опыта. Наша история – не сюжет из серии «10 шагов к успеху» и не рассуждения видных «теоретиков ритейла», это рассказ о реальном бизнесе и о том, какие выводы можно сделать из того, что когда-то происходило с нами.
Читать дальше →

cool-old-term — старый добрый терминал

Reading time1 min
Views49K
Некто с никнеймом Swordfish90 разрабатывает эмулятор терминала cool-old-term с интерфейсом, напоминающим старые CRT мониторы. Автор признаётся, что мечтал реализовать подобное приложение со времени, когда он впервые сыграл в Fallout III. Swordfish90 пытается сделать олдскульный, но вместе с тем настраиваемый и легковесный эмулятор терминала. Проект разрабатывается с использованием Qt5 и QtQuick, разработка ведётся на Github.


Скрытый текст

«65К методов хватит всем» или как бороться с лимитом DEX методов в Android

Reading time6 min
Views35K
Это произошло внезапно. Только что вы писали код для своего приложения под андроид, вам это нравилось, и вы наслаждались процессом. Вы добавили крутую библиотеку чтобы получить дополнительные возможности и писать более простой код. Но вместо работающего приложения на выходе вы получаете ужасающую надпись:

Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

И вы в ступоре, вы неспособны создать DEX файл для APK. Вы не имеете ни малейшего представления о том, что это и как это исправить. И что бы вы не делали, оно будет приводить вас к самому логичному состоянию: ПАНИКА.
Что же произошло?

Отъявленный программист: Неформальные истории и откровенные разговоры об IT-индустрии

Reading time8 min
Views27K
В издательстве «Питер» прорабатывается идея издать не совсем обычную книгу. Это будет сборник неформальных интервью с известными (и не очень) ИТ-специалистами об их работе, жизни и взглядах. Пожалуй, на русском языке это первая попытка исследовать архетип компьютерщика с разных углов зрения.
Мы не делали ставку исключительно на очень известных людей (хотя несколько героев, безусловно, всемирно известны), а прежде всего, нас интересовала яркость каждой отдельной личности, их взаимное разнообразие.

Логически вся книга планируется из трех разделов-частей:
1) Интервью с программистами, админами, т.д. – прямая речь;
2) Интервью об информационных технологиях и интернете, их влиянии на общество – профессионалы, не являющиеся непосредственно разработчиками, но которые «варятся» в этой кухне, расскажут об их, подчас, странной субкультуре и технологиях;
3) Случаи из жизни программистов и айтишников – несколько ярких и живых примеров, полуюмористических (или поучительных) историй, основанных на реальных фактах и событиях (в стиле Веллера и его «Легенд Невского проспекта»).

На Западе книги подобного плана весьма популярны: достаточно вспомнить «Coders at Work» Сейбела, у нас подобный жанр пока ещё только приживается.
В связи с этим хочется установить предварительную обратную связь с будущими читателями. Любопытна ли будет вам такая книга? Какие вопросы и темы было бы интересно затронуть? Может быть, вы захотите предложить нам ещё каких-то интересных собеседников?

Ниже под катом можно посмотреть список интервьюируемых и краткую аннотацию по теме беседы.
Читать дальше →

Рефакторить или не рефакторить?

Reading time9 min
Views47K
Мне нравится рефакторинг. Нет, не так. Я люблю рефакторинг. Не, даже не так. Я чертовски люблю рефакторинг.
Я не переношу плохой код и плохую архитектуру. Меня коробит, когда я пишу новую фичу, а в соседнем классе творится полный бардак. Я просто не могу смотреть на печально названные переменные. Иногда перед сном я закрываю глаза и представляю, что можно было бы улучшить в проекте. Иногда я просыпаюсь в три часа ночи и иду к ноутбуку, чтобы что-нибудь поправить. Мне хочется, чтобы на любой стадии разработки код был не просто кодом, а произведением искусства, на которое приятно смотреть, с которым приятно работать.

Если вы хоть немного разделяете мои ощущения, то нам есть о чём поговорить. Дело в том, что со временем что-то внутри меня начало подсказывать, что рефакторить всё подряд, везде и всё время — не самая лучшая идея. Поймите меня правильно, код должен быть хорошим (а лучше бы ему быть идеальным), но в условиях суровой реальности не всегда разумно постоянно заниматься улучшением кода. Я вывел для себя несколько правил о своевременности рефакторинга. Если у меня начинают чесаться руки что-нибудь улучшить, то я оглядываюсь на эти правила и начинаю думать: «А действительно ли сейчас тот момент, когда нужно нарефакторить?». Давайте порассуждаем о том, в каких же случаях рефакторинг уместен, а в каких — не очень.

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

Будущее Веб, которого не будет

Reading time5 min
Views27K
Каким будет Веб в будущем? Об этом много пишут — начиная от новых спецификаций на HTTP, позволяющих быстрее и защищенней передавать данные по сети, заканчивая идеями “семантического” веба. Это все замечательно, вебу нужны быстрые сети и организованные данные, но есть проблемы которые остаются пока недооцененными и нерешаемыми с использующимися технологиями. Давайте соберем претензии к текущей реализации?
Читать дальше →

Спецификатор constexpr в C++11 и в C++14

Reading time16 min
Views232K
Одна из новых возможностей C++11 — спецификатор constexpr. С помощью него можно создавать переменные, функции и даже объекты, которые будут рассчитаны на этапе компиляции. Это удобно, ведь раньше для таких целей приходилось использовать шаблоны. Но тут все не так просто. У тех, кто не так хорошо знаком с constexpr, может сложиться впечатление, что теперь не будет никаких проблем с расчетами на этапе компиляции. Но на constexpr-выражения наложены серьезные ограничения.

В первой части будет рассказано про constexpr, о том, какие будут изменения в стандарте C++14, а во второй части будет пример использования constexpr: библиотека, которая считает результат математического выражения в строке.
С помощью нее можно будет написать следующий код:
constexpr auto x = "(4^2-9)/8+2/3"_solve;
std::cout << "Answer is " << x;

И ответ в виде дроби будет получен на этапе компиляции:
Answer is 37/24
Сразу предупреждаю, код этой библиотеки сложно понять.
Кому эта тема интересна, добро пожаловать под кат!
Читать дальше →

Немного тестов производительности сетевых фреймворков

Reading time6 min
Views23K
Привет Хабр! Пару месяцев назад я захотел провести тестирование производительности некоторых сетевых фреймворков, c целью понять насколько большая разбежка между ними. Надо ли использовать Node.js там, где хотелось бы Python с Gevent или нужен Ruby с его EventMachine.

image

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

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

Reading time9 min
Views69K
Три года тому назад я работал в лаборатории нейробиологии в Барселоне, занимаясь тем, что ставил на людей различные электроды и вел курсы по когнитивным системам. А сегодня я проектирую и пишу программное обеспечение для жизни.

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

64 миллисекунды после нажатия

Reading time3 min
Views30K
Если ваше приложение загружает данные из интернета, отображает в ListView и обрабатывает нажатия на ячейки, то можете продолжать читать. Это рассказ о том как можно закрашиться в течение 64 мс после клика на ячейку списка.
Читать дальше →

Типичные ошибки API платежных систем

Reading time2 min
Views36K
imageЕсли вы собираетесь написать n-ную платежную систему, рекомендую ознакомиться с типичными ошибками в реализации API, которые я собрал в процессе написания модулей для своего проекта.

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

Об одном алгоритме сжатия случайных сигналов (с потерями)

Reading time5 min
Views25K


Аннотация


Известно, что существуют различные способы формирования псевдослучайных чисел для моделирования случайных величин на ЭВМ. Если допустить, что высокочастотный (ВЧ) сигнал представляет из себя реализацию некоторой случайной величины, то возникает большой соблазн подобрать для этой реализации свою модель случайной величины, имеющую известные параметры реализации алгоритма её формирования. Тогда мы можем представить ВЧ сигнал в виде этого алгоритма, а хранить лишь его параметры, т.е. происходит сжатие.
Читать дальше →

Качество vs. кайф: что на самом деле важно в аудиотехнике?

Reading time8 min
Views92K
Вообще-то я хотел назвать этот пост «Как я купил наушники за 40 тысяч рублей». Но не стал, потому, что это было бы неправдой: не купил, хотя всерьез собирался. Идея этого поста вертелась в моей голове давно, еще с тех пор, как я задался вопросом: какие самые лучшие наушники я могу купить за свой бюджет (бюджет тогда был порядка семисот рублей). А колонки? А усилитель? Нужен ли мне проигрыватель дисков с поддержкой форматов SACD и DVD-Audio или физический носитель умер, и бал правят сервисы музыкального стриминга? А может винил? Это же тепло и лампово, и шуршит игла по канавкам, в то время как ты смотришь на приличного размера конверт…

Не могу сказать, что я хочу положить конец холиварам. Скорее наоборот, хочу начать еще один. В конце концов, если обсуждение пластиковых коробочек с маленьким динамиком внутри и медным проводком на трех разных форумах содержит столько же текста, сколько «Война и мир», то чем я хуже? А какая у меня цель? Да очень просто: с тех пор, как проблема наушников за 700 рублей была так или иначе решена, появилось много других проблем. Стоит ли покупать релизы высокого разрешения на HDTracks или можно обойтись удобным iTunes Store? Не является ли прослушивание интернет-радио оскорблением для моих чувствительных аудиофильских ушей? Сколько стоят идеальный плеер и идеальные колонки? Хотелось выработать некую позицию, обозначить свое отношение к различным инструментам прослушивания музыки, и далее по ней жить. Кажется, у меня получилось. Хочу поделиться этой позицией с вами, ну и заодно узнать, как я неправ. Велкам под кат! Заранее предупреждаю, что я буду многословен, сентиментален и брюзглив.

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

Information

Rating
Does not participate
Location
Азербайджан
Registered
Activity