Как стать автором
Обновить
64
0
Алексей Акимов @AlexAkimov

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

Отправить сообщение

Иммутабельность в JavaScript

Время на прочтение10 мин
Количество просмотров168K

habracut


Что такое иммутабельность


Неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания. Результатом любой модификации такого объекта всегда будет новый объект, при этом старый объект не изменится.

Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии57

Волшебный интерфейс

Время на прочтение11 мин
Количество просмотров33K
Powered Interface

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

Так как мы с коллегами буквально на прошлой неделе завершили большой проект Web Dashboard'а (точнее — компонента, позволяющего создавать и просматривать ваши собственные дэшборды), в котором как раз стояла цель разработки удобного интерфейса, я решил осветить в статье, на какие основные моменты при проектировании интерфейса стоит обратить внимание, и привёл примеры нашего решения.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии27

За один проход

Время на прочтение7 мин
Количество просмотров155K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Всего голосов 73: ↑72 и ↓1+71
Комментарии56

Это будущее

Время на прочтение6 мин
Количество просмотров87K
Добрый день.

Предлагаю вашему вниманию перевод юмористического поста, посвященного облачным технологиям: It's The Future. Всяческие поправки и советы привествуются.


image

Читать дальше →
Всего голосов 129: ↑116 и ↓13+103
Комментарии37

Как IT-фрилансеру стать предпринимателем. Часть 3

Время на прочтение4 мин
Количество просмотров36K
Всем привет! Мы продолжаем серию постов о том, как IT-фрилансеру стать предпринимателем. Вы уже знаете, почему ИП лучше, чем ООО и как зарегистрировать ИП самостоятельно. Сегодня мы расскажем, что ждёт предпринимателя после регистрации.



Краткий путеводитель для начинающих предпринимателей от «Я люблю ИП»
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии46

Да, я пишу десктопные приложения под Windows

Время на прочтение5 мин
Количество просмотров119K


Здравствуйте, меня зовут Владимир и я анонимный разработчик десктопных приложений под Windows. В этом месте все должны сказать «Здравствуй, Владимир!», а кто-то может быть добавит «Молодец, что осознал!». А потом все похлопают. Нет, правда, иногда от чтения Хабра у меня возникают именно такое ощущение, что нормально, нет, даже не «нормально», а допустимо и одобряемо сегодня писать только микросервисы для каких-то стартапов, которые будут по какому-то REST API отдавать данные какому-нибудь фронтенду на Ангуляре, который и будет, наконец, показывать пользователю что-то невероятно полезное, вроде таблицы с аггрегированными отзывами о стрижках пуделей с возможностью посмотреть на гуглокартах где бы в вашем городе можно было сделать именно такую стрижку вашему пуделю (несуществующему). А никаких других программ писать уже нет-нет, никак нельзя! Что за чушь?!

Да, многое сегодня происходит в вебе и на мобильных устройствах, но, знаете ли, далеко не всё. Значительная часть приложений по-прежнему является десктопным софтом. И даже (о, ужас!) не под Mac Os или Linux, а под тот самый богомерзкий Windows. И, знаете ли, софт этот живёт, развивается, поддерживается и является ежедневным рабочим инструментом миллионов людей. И никуда он мигрировать не собирается, потому что есть причины, по которым иногда именно десктопное приложение является лучшим вариантом.
Читать дальше →
Всего голосов 272: ↑231 и ↓41+190
Комментарии565

Перевод отрывков из книги Роберта Хайнлайна «Заберите себе правительство» — часть 5

Время на прочтение14 мин
Количество просмотров36K

«Мама лучше знает!» и «Отец всегда прав!»


Типичная привычка людей старшего поколения – пичкать юных потомков изречениями, вроде «Чем старее, тем мудрее!». Молодые люди в ответ обижаются и негодуют, до тех пор, пока сами не постареют достаточно для того, чтобы поучать следующее поколение.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

На Кикстартере — куртка для любителей выпить

Время на прочтение1 мин
Количество просмотров10K


Осталось 10 часов до окончания приёма предварительных заказов на куртку The Drinking Jacket. Одежда с говорящим названием снабжена 2 внутренними и 2 внешними глубокими карманами (итого, под 4 ёмкости), скрытым карманом для фляжки, разворачиваемыми рукавами-перчатками и замком-молнией, открывающим пиво.

Удивительно, но куртка в 9 (!) раз превысила начальную цель по сбору средств: собрано заказов почти на полмиллиона долларов!
Читать дальше →
Всего голосов 15: ↑10 и ↓5+5
Комментарии12

Почему я прекратил ангел-инвестирование (и почему вы никогда не должны начинать). Часть 1

Время на прочтение12 мин
Количество просмотров21K


Я начал бизнес-ангельское инвестирование практически случайно, что звучит довольно странно. Кто «случайно» будет инвестировать десятки тысяч долларов в высшей степени авантюрные предприятия? Что ж, я поступал именно так.

Друг представил меня Клейтону Кристоферу (Clayton Christopher), который собирал деньги для своей новой алкогольной компании Deep Addy. Их первый продукт, сладкая чайная водка, был великолепен, и он был опытным предпринимателем, так что и я подключился к проекту.

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

Я ошибался.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии11

Защита переговоров. Антижучки и индикаторы поля

Время на прочтение15 мин
Количество просмотров101K

Примеры найденных жучков (источник фото: Интернет)

Дело было еще во Владивостоке.
Знакомые, владельцы турфирмы, рассказали, что однажды уборщица их спросила: «А почему вечером, когда все уходят, у вас сверху, на шкафу что-то мигает?». Полезли на шкаф, а там — чуть ли не автомобильный аккумулятор и рация, прикрученная синей изолентой. Вот такой суровой бывала дальневосточная прослушка.

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

Под катом немного исторических примеров прослушки и доступные способы самостоятельной проверки своих помещений.
(Если ваши далекие знакомые сталкивались с обнаружением и, не дай бог, с установкой жучков, поделитесь в комментах)
Читать дальше →
Всего голосов 59: ↑58 и ↓1+57
Комментарии35

Пациент скорее жив, чем мертв? Обследование здоровья программного проекта

Время на прочтение3 мин
Количество просмотров5.5K


Чек-листы – это эффективный инструмент контроля. Они сводят к минимуму возможность упущения важной информации и снижают вероятность совершения ошибок типа «не знал, забыл, закрутился».

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

Каждый из 33 пунктов оценивается от 0 до 3:
0 – даже не слышали об этом;
1 – слышали, но пока не применяем;
2 – применяется частично;
3 – применяется в полной мере.

Если какой-то пункт не применим, в силу особенности вашего проекта, ставим оценку равную единице. Итоговая оценка — сумма баллов, по всем пунктам.

Ну, что, берем в руки калькулятор и обследуем ваш проект?
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии1

У нас же есть техническое задание на систему / сайт / приложение / проект…

Время на прочтение8 мин
Количество просмотров13K

Ситуация


  • На входе в студию клиент (виртуально / реально не важно).
  • Клиент хочет что-то заказать у нас — систему, сайт, приложение, аппу, что угодно — все что можно разработать и даже потом скрестить бульдога с муровьедом например (1С битрикс, просто 1С, другие системы и наша разработка).
  • Высылает он нам нечто (как мы это видим), называя это «тз» (как он это видит) и говорит — оценить / посчитать / задать вопросы и далее везде, ожидая в ответ как правило получить вполне конкретную точную цифру и срок (беру пример крайней клиники) когда это будет готово.
  • Ждет.


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

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

Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии11

On-Demand экономика: Причины неудач стартапа Homejoy

Время на прочтение6 мин
Количество просмотров8K


C крахом Homejoy, инвесторы, СМИ и даже потребители начали сомневаться в принципах модели «экономики по требованию». И это вполне справедливо, учитывая объемы инвестиций в платформу за последние несколько лет (более $4 миллиардов в 2014 году).

С точки зрения инвесторов, модель достаточно приличная: масштабируемый продукт, который приносит прибыль с первого дня и имеет виральный эффект. Компания Homejoy ничем не отличалась от этого описания, но её история сложилась иначе.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии4

Автомобили могут извлекать энергию из ям на дорогах

Время на прочтение2 мин
Количество просмотров9.8K


Дорог идеального качества не бывает. По пути обязательно встретится ямка или лежачий полицейский. В этом случае срабатывает подвеска автомобиля. Специалисты с кафедры машиностроения инженерного колледжа Политехнического университета Виргинии предлагают собирать энергию с таких препятствий.
Читать дальше →
Всего голосов 22: ↑14 и ↓8+6
Комментарии12

Новый функционал Google Analytics: когортный анализ

Время на прочтение5 мин
Количество просмотров13K
Эксперт по web-аналитике с мировым именем Авинаш Кошик сокрушается в своём блоге о том, что правило 80/20 срабатывает, увы, и для аналитики. 80% пользователей используют лишь 20% доступных инструментов. А задумывались ли вы о том, что, пожалуй, самая мощная система web-аналитики доступна абсолютно бесплатно? Более того, вместе с ней доступна масса экспертизы на русском и английском языках, которая поможет освоиться с инструментом и создать аналитическую систему, «заточенную» именно под ваш бизнес.  Работа с аналитикой — одно из ключевых направлений деятельности в компании. Важно правильно поставить вопрос, своевременно увидеть признаки проблемы, собрать максимум информации и только потом принимать решение на основе анализа. Даже, если проблем нет и вы рады динамике абсолютно всех показателей, не стоит останавливаться — нужно узнать о причинах успеха, чтобы закрепить его.

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии1

12 малоизвестных фактов о CSS

Время на прочтение9 мин
Количество просмотров60K
Предлагаю читателям «Хабрахабра» перевод статьи «12 Little-Known CSS Facts (The Sequel)». Она совсем недавно была упомянута в дайджесте интересных материалов из мира веб-разработки и IT.

Update: немного «шлифанул» перевод напильником. Выражаю благодарность всем неравнодушным читателям.
Внимание! Под катом почти 1.5 Мб картинок и много интересных ссылок.

Итак, начнём-с…

1. В свойстве border-radius можно использовать slash-синтаксис.


Об этом уже писалось 4 года назад, но многие новички и даже некоторые опытные разработчики не знают о существовании этой «фишки».

Верите или нет, но следующий код валиден:

.box {
  border-radius: 35px 25px 30px 20px / 35px 25px 15px 30px;
}

Читать дальше →
Всего голосов 73: ↑71 и ↓2+69
Комментарии21

Почему непросто показать все цвета в одномерном пространстве, и сколько раз это можно сделать

Время на прочтение7 мин
Количество просмотров41K
Яндекс умеет подсказывать цвета по их названию и находить близкие к ним. Некоторое время назад эту подсказку (внутри себя мы называем такие штуки «колдунщиками») пришлось переделывать, чтобы она соответствовала виду поисковых результатов после их редизайна. И мы воспользовались этим поводом, чтобы поработать над ним всерьёз, — ведь оказалось, что расположить цвета линейно — очень нетривиальная задача.







В этом посте я хочу рассказать, какую интересную алгоритмическую задачу, которая потребовала погружения в теорию цвета, нам пришлось решать почти всем Яндексом, чтобы сделать новый колдунщик таким, каким его задумала команда.
Читать дальше →
Всего голосов 71: ↑68 и ↓3+65
Комментарии31

Такие удивительные семафоры

Время на прочтение9 мин
Количество просмотров138K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

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

Раньше я думал, что семафоры давно устарели. В 1960‑х, когда еще мало кто писал многопоточные программы, или любые другие программы, Эдсгер Дейкстра предложил идею нового механизма синхронизации — семафор. Я знал, что при помощи семафоров можно вести учет числа доступных ресурсов или создать неуклюжий аналог мьютекса, но этим, как я считал, область их применения ограничивается.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии1

Немного понагнетаем: стало понятнее, что будет с персональными данными после 1 сентября 2015

Время на прочтение5 мин
Количество просмотров48K

Штрафы за разные нарушения суммируются.

242-ФЗ подсказывает нам, что оператор обязан обеспечить запись, хранение, изменение и извлечение персональных данных граждан Российской Федерации (это всё, что прямо или косвенно относится к субъекту ПДн. И номер телефона, и даже уровень защищенности его данных можно отнести сюда согласно 152-ФЗ) с использованием баз данных, находящихся на территории Российской Федерации. С 1 сентября 2015 года. За использование первичной базы за пределами РФ вам светит относительно небольшой штраф и, что куда хуже, блокировка ресурсов в течение 3 рабочих дней с даты судебного решения. При этом разблокировать доступ и «выйти» из реестра можно будет только по решению суда.
Читать дальше →
Всего голосов 48: ↑36 и ↓12+24
Комментарии55

Lines и теория вероятностей

Время на прочтение6 мин
Количество просмотров34K


Каждый, кто играл в эту игру, знает: если сейчас попытаться вытащить голубой шарик, на который показывает курсор, чтобы поставить вместо него бордовый, то один из приходящих новых трёх шариков скорее всего «заткнёт» это место. Если попытаться ещё раз вытащить — заткнёт снова. На протяжении всех долгих лет существования этого эффекта между моими коллегами периодически возникали споры, случайно ли это получилось, или нарочно сделана такая «подлянка», чтобы было труднее играть.

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

В этой статье вы сможете вернуться на 20 лет назад и увидеть, как примерно проходил тогда процесс реверс-инжиниринга. Мы рассмотрим 16-битный ассемблерный код, который выбирает место для шариков. Здесь не будет современных 32- и 64-битных инструкций, обрастающих специальными наборами команд, не будет вызовов всяких там dll, потоков и прочих ухищрений. Только простой код. Мне кажется, его поймут даже те, кто ни разу не видел ассемблера. Желающие смогут исправить алгоритм, чтобы он работал «честно».
Читать дальше →
Всего голосов 79: ↑77 и ↓2+75
Комментарии33
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность