26 ноября 2015 года на встрече московской Java User Group, проходившей в офисе компании КРОК, Кирилл Толкачёв и Александр Тарасов выступили с докладом «микроСЕРВИСЫ: огонь, вода и медные трубы». О чём шла речь, какие впечатления от выступления, обо всём этом можно прочитать дальше.
User
Почти весь умный дом: большая подборка отдельных смарт-элементов: лампы, розетки, климат, экология и безопасность
17 min
59KКатегория управляемых смарт-устройств в «рубрике» умный дом уже близка к тому, чтобы перестать поддаваться исчислению и систематизации, и отдельные прогнозы пока еще указывают на рост интереса пользователей к этой нише.
Из-за высокой конкуренции среди производителей стала заметна тенденция к созданию отдельных дешевых элементов, не входящих в какую-либо систему, а автономно работающих в паре с собственным софтом. Сегодня практически все время про них: управляемые смарт-девайсы для умного дома: свет, электричество, экология и видеонаблюдение. Выбираем среди дорогих и дешевых.
Из-за высокой конкуренции среди производителей стала заметна тенденция к созданию отдельных дешевых элементов, не входящих в какую-либо систему, а автономно работающих в паре с собственным софтом. Сегодня практически все время про них: управляемые смарт-девайсы для умного дома: свет, электричество, экология и видеонаблюдение. Выбираем среди дорогих и дешевых.
+22
Linux-контейнеры дома: зачем и как
8 min
120KРассуждения
При упоминании словосочетания «контейнерная виртуализация», многим на ум сразу же приходят Virtuozzo и OpenVZ, а также Docker. Ассоциируется же это все, в первую очередь, с хостингом, VPS и другими подобными вещами.
Дома, на личных компьютерах многие используют виртуальные машины: в основном, пожалуй, Virtualbox. Как правило, для того, чтобы работая под Linux, иметь под рукой Windows или наоборот. Однако, при наличии множества родственных Linux-операционок, я стал замечать, что использование виртуальных машин — это, мягко говоря, нерационально.
+64
FP на Scala: Invariant Functor
7 min
12KTutorial
В статье рассматривается
Публикация является продолжением FP на Scala: Что такое функтор? в которой были рассмотрены следующие вопросы
Содержание
- Как такая абстракция теории категорий как инвариантный функтор (Invariant Functor), который иногда называют экпоненциальным функтором (Exponential Functor), выражается на Scala.
- Два правила (Identity Law, Composition Law), которым доложен следовать каждый инвариантный функтор.
- Приведен пример инвариантного функтора с состоянием (Value Holder)
- Приведен пример инвариантного функтора-отношения между элементами множества (полугруппа)
Публикация является продолжением FP на Scala: Что такое функтор? в которой были рассмотрены следующие вопросы
- Какая имеется связь между теорией категорий, Haskell и Scala.
- Что такое ковариантный функтор.
- Что такое контравариантный функтор.
Содержание
- Введение
- Что такое Invariant Functor
- Invariant Functor — Identity Law
- Invariant Functor — Composition Law
- Пример #1: Value Holder
- Пример #2: Полугруппа
- Инвариантный функтор в библиотеках
+17
FP на Scala: Что такое функтор?
15 min
32KTutorial
Специалист, приступающий к изучению функционального программирования, сталкивается как с неоднозначностью и запутанностью терминологии, так и с постоянными ссылками на «серьезную математику».
В этой статье, не используя теорию категорий с одной стороны и эзотерические языковые механизмы Scala с другой стороны, рассмотрены два важнейших понятия
Объяснено происхождение категориальной терминологии, указана роль языковых механизмов в реализации категориальных абстракций и рассмотрено несколько ковариантных (Option, Try, Future, List, Parser) и контравариантных (Ordering, Equiv) функторов из стандартной библиотеки Scala.
Первая статья в «категориальной серии»:
Если Вы желаете сильнее погрузиться в мир Scala, математики и функционального программирования — попробуйте онлайн-курс «Scala for Java Developers» (видео + тесты, всего за 25% цены!).
В этой статье, не используя теорию категорий с одной стороны и эзотерические языковые механизмы Scala с другой стороны, рассмотрены два важнейших понятия
- ко-вариантный функтор
- контра-вариантный функтор
- Exponential (Invariant) Functor, BiFunctor, ProFunctor
- Applicative Functor, Arrow, Monad / Co-Monad
- Monad Transformers, Kleisli, Natural Transformations
Объяснено происхождение категориальной терминологии, указана роль языковых механизмов в реализации категориальных абстракций и рассмотрено несколько ковариантных (Option, Try, Future, List, Parser) и контравариантных (Ordering, Equiv) функторов из стандартной библиотеки Scala.
Первая статья в «категориальной серии»:
- FP на Scala: что такое функтор?
- FP на Scala: Invariant Functor
Если Вы желаете сильнее погрузиться в мир Scala, математики и функционального программирования — попробуйте онлайн-курс «Scala for Java Developers» (видео + тесты, всего за 25% цены!).
- Про языковые механизмы абстракции
- Про теорию категорий и Haskell
- Что такое ковариантный функтор
- Примеры ковариантных функторов
- Ковариантный функтор: Identity Law
- Ковариантный функтор: Composition Law
- Ковариантный функтор: используем для оптимизации
- Что такое контравариантный функтор
- Примеры контравариантных функторов
- Контравариантный функтор: Identity Law
- Контравариантный функтор: Composition Law
- Что дальше?
+23
Подальше от обыденной реальности: фантастические романы, которые стоит прочитать
4 min
141KФантастика как жанр заставляет читателей и писателей выйти за пределы разумного, дать волю своему воображению и отправиться в неизведанные миры. За это мы и любим этот жанр. RoboHunter этой осенью предлагает с головой погрузиться в мир научной фантастики.
+55
Как спасти залитый ноутбук и минимизировать стоимость возможного ремонта?
10 min
306KRecovery Mode
Одна из самых распространенных проблем, с которыми обращаются в сервисные центры владельцы лэптопов – пролитая на устройство жидкость. Само по себе событие из ряда вон выходящее и крайне неприятное, но… Доходы мастеров сервиса могли бы быть несколько скромнее, а число выживших после омовения устройств значительно больше, если бы пользователи были чуточку повнимательнее и вовремя познакомились с правилами первой неотложной помощи для своих электронных друзей.
О технике “искусственного дыхания” для ненароком залитого ноутбука, о том, как по возможности снизить затраты на вероятный ремонт и повысить шансы на полное восстановление устройства мы расскажем в нашей статье.
О технике “искусственного дыхания” для ненароком залитого ноутбука, о том, как по возможности снизить затраты на вероятный ремонт и повысить шансы на полное восстановление устройства мы расскажем в нашей статье.
+31
36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql
5 min
114KСложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.
Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.
У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.
У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
+81
Основы и заблуждения насчет JavaScript
9 min
55KОбъекты, классы, конструкторы
ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).
Прототипное делегирующее наследование
Классическое наследование очень похоже на то, как люди наследуют гены своих предков. Есть какие-то базовые особенности: люди могут ходить, говорить… И есть характерные черты для для каждого человека. Люди не в состоянии изменить себя — свой класс (но могут поменять собственные свойства) и бабушки, дедушки, мамы и папы не могут динамически повлиять на гены детей и внуков. Все очень по земному.
Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков.
Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.
+148
Механизмы профилирования Linux
9 min
38KПоследние пару лет я пишу под ядро Linux и часто вижу, как люди страдают от незнания давнишних, общепринятых и (почти) удобных инструментов. Например,
printk
, собрать логи, обработать их +60
52 вопроса, которые вы должны задать на собеседовании
4 min
74KВы, наверное, уже знаете, что интервью — это не просто очередной этап при устройстве на работу, это также ваша возможность разобраться, подходит ли вам эта работа. Для этого важно задать некоторые вопросы. Что вы хотите знать об этой должности? О компании? О подразделении? О команде? О корпоративной культуре?
Задавать вопросы бывает сложно. Мы это знаем. Для того, чтобы упростить вам это задание, мы приводим список ключевых вопросов для интервью. Мы определённо не рекомендуем задавать их все. Пожалейте рекрутера!
Задавать вопросы бывает сложно. Мы это знаем. Для того, чтобы упростить вам это задание, мы приводим список ключевых вопросов для интервью. Мы определённо не рекомендуем задавать их все. Пожалейте рекрутера!
+22
Как поступать, если заказчик затягивает приемку работ
4 min
27KВсем привет!
В своей практике я неоднократно сталкивался с последствиями неправильных действий при передаче результата работ. Итог был печальным.
Хочу поделиться опытом в решении вопроса.
Предпроектное исследование для внедрения 1С. Предоплата 50 процентов. Исполнитель завершил работу и скинул ее на электронную почту заказчику.
Начинаются чудеса. Всегда оперативно отвечавший заказчик не дает обратную связь. Важное совещание, подведение годовых итогов, завал работы и т.п.
Неделя, вторая, месяц, два месяца. Тишина. Наконец, удается назначить встречу с руководством. В кабинете генерального директора исполнитель узнает удивительные вещи: работа не качественная, все возможные сроки прошли, интерес утрачен, оплаты второй части не будет. «Хотите судиться – давайте, мы с вас и предоплату обратно возьмем».
В своей практике я неоднократно сталкивался с последствиями неправильных действий при передаче результата работ. Итог был печальным.
Хочу поделиться опытом в решении вопроса.
Типичный пример
Предпроектное исследование для внедрения 1С. Предоплата 50 процентов. Исполнитель завершил работу и скинул ее на электронную почту заказчику.
Начинаются чудеса. Всегда оперативно отвечавший заказчик не дает обратную связь. Важное совещание, подведение годовых итогов, завал работы и т.п.
Неделя, вторая, месяц, два месяца. Тишина. Наконец, удается назначить встречу с руководством. В кабинете генерального директора исполнитель узнает удивительные вещи: работа не качественная, все возможные сроки прошли, интерес утрачен, оплаты второй части не будет. «Хотите судиться – давайте, мы с вас и предоплату обратно возьмем».
+23
Cистема образования в США: Младшая и Средняя школа — чему и как учат? Часть 1
4 min
37KКак то несколько лет назад зашел разговор с сыном шестиклассником о русских дворовых поговорках и задачках.
Для затравки я взял классическую дворовую считалку:
А И Б сидели на трубе
А упала, Б пропала
Кто остался на трубе?
Сын задумался и потом довольно быстро разгадал. Я уязвленный в лучших чувствах российского дворового сленга решил усложнить и попросил перевести на английский. Савва (так зовут сына) не задумываясь выдал следующее:
A N' B were on a tree.
A fell down, so did B.
Who is left on the tree?
Результат несколько меня ошеломил после чего я решил делать эти записки о системе общеобразовательной (очень хорошей школы) в США.
+27
Несколько интересностей и полезностей для веб-разработчика #44
6 min
40KДоброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.
Огромный проект, где спецификация веб-компонентов используется на полную катушку. ExpandJS это набор из более чем 80 компонентов и более 350 различных функций для работы с ними. И все это доступно как каркас, но так же и в трендовом Material Design стиле.
ExpandJS
Огромный проект, где спецификация веб-компонентов используется на полную катушку. ExpandJS это набор из более чем 80 компонентов и более 350 различных функций для работы с ними. И все это доступно как каркас, но так же и в трендовом Material Design стиле.
<!-- Import elements -->
<link rel="import" href="../mat-content.html">
<link rel="import" href="../mat-drawer.html">
<link rel="import" href="../mat-header-panel.html">
<link rel="import" href="../mat-shell.html">
<!-- Application scaffold -->
<mat-shell theme="...">
<mat-drawer>...</mat-drawer>
<mat-header-panel>
<mat-header>...</mat-header>
<mat-content>...</mat-content>
</mat-header-panel>
<mat-drawer right>...</mat-drawer>
</mat-shell>
+41
Как защитить интересы сторон в договоре на создание ПО
3 min
4.7KTutorial
Сегодня мы рассмотрим основные вопросы, которые возникают на практике при согласовании условий договора на создание ПО. Понятно, что в целях защиты интересов заказчика или разработчика в договор могут вноситься различные положения, от которых зависит его фактическое исполнение и достигаемый результат.
До начала обсуждения условий договора на разработку ПО необходимо определиться с его формой. В этом вам поможет предыдущий пост: «Как выбрать договор на разработку ПО». С формами договоров и пояснениями к ним можно ознакомиться здесь.
После определения формы договора на разработку ПО стороны, как правило, волнуют три вопроса:
1) Как оформить заказ на разработку ПО в упрощенном порядке?
2) Какие права на ПО переходят заказчику и сохраняются у разработчика?
3) Как документально оформить передачу заказчику прав на ПО?
Ниже мы рассмотрим данные вопросы подробнее.
До начала обсуждения условий договора на разработку ПО необходимо определиться с его формой. В этом вам поможет предыдущий пост: «Как выбрать договор на разработку ПО». С формами договоров и пояснениями к ним можно ознакомиться здесь.
После определения формы договора на разработку ПО стороны, как правило, волнуют три вопроса:
1) Как оформить заказ на разработку ПО в упрощенном порядке?
2) Какие права на ПО переходят заказчику и сохраняются у разработчика?
3) Как документально оформить передачу заказчику прав на ПО?
Ниже мы рассмотрим данные вопросы подробнее.
+14
Что такого особенного в Nim?
7 min
80KTranslation
Язык программирования Nim (ранее именовался Nimrod) — захватывающий! В то время как официальная документация с примерами плавно знакомит с языком, я хочу быстро показать вам что можно сделать с Nim, что было бы труднее или невозможно сделать на других языках.
Я открыл для себя Nim, когда искал правильный инструмент для написания игры, HoorRace, преемник моей текущей DDNet игры/мода Teeworlds.
(прим. пер. На синтаксис Nim имели влияние Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.)
Запускаем!
Да, эта часть всё ещё не захватывает, но просто следите за продолжением поста:
for i in 0..10:
echo "Hello World"[0..i]
+51
Спор по договору на продвижение сайта
3 min
13KTutorial
Данной публикацией мы хотели открыть серию материалов о судебной практике разрешения споров в ИТ-сфере.
Начнем с проблем работы с заказчиками SEO. Для иллюстрации выбран один из арбитражных споров, на примере которого можно увидеть отношение суда к данным услугам и предложить некоторые практические рекомендации по снижению финансовых рисков.
Заказчик (Истец) обратился в суд с требованием о расторжении договора на оказание рекламных услуг с исполнителем (Ответчик), взыскании оплаты по договору и процентов за пользование чужими денежными средствами.
Арбитражный суд первой инстанции удовлетворил исковые требования, исходя из того, что цель работ, установленная в техническом задании, не достигнута, доказательства выполнения исполнителем поименованных в договоре работ, отсутствуют.
Суды вышестоящих инстанций отменили решение и в удовлетворении иска отказали.
Причины и выводы спрятаны под катом.
Начнем с проблем работы с заказчиками SEO. Для иллюстрации выбран один из арбитражных споров, на примере которого можно увидеть отношение суда к данным услугам и предложить некоторые практические рекомендации по снижению финансовых рисков.
Суть спора по договору на продвижение сайта
Заказчик (Истец) обратился в суд с требованием о расторжении договора на оказание рекламных услуг с исполнителем (Ответчик), взыскании оплаты по договору и процентов за пользование чужими денежными средствами.
Арбитражный суд первой инстанции удовлетворил исковые требования, исходя из того, что цель работ, установленная в техническом задании, не достигнута, доказательства выполнения исполнителем поименованных в договоре работ, отсутствуют.
Суды вышестоящих инстанций отменили решение и в удовлетворении иска отказали.
Причины и выводы спрятаны под катом.
+19
«Умный Дом» и система MySensors: Часть 0
4 min
56KВ первой части я немного рассказал о моем опыте создания устройств на основе системы MySensors. Должен признать, описание получилось не полным — без начала и без конца.
В этот раз займемся «началом», значит это будет Часть 0.
В этот раз займемся «началом», значит это будет Часть 0.
+18
Как выбрать договор на разработку ПО
3 min
21KTutorial
На практике нам часто приходится сталкиваться с различными договорами на создание программного обеспечения. Обычно для оформления заказа на разработку программных продуктов используются договор возмездного оказания услуг, договор подряда либо договор авторского заказа (авторский договор).
Какой из них верный и чем грозит ошибка при выборе договора?
Какой из них верный и чем грозит ошибка при выборе договора?
+10
Читаем электронные книги на английском без словарей и переводчиков
3 min
98K1. Интро. Личное
Я готовлюсь к языковому экзамену IELTS (International English Language Testing System) — пожалуй, самому популярному
тесту на знание английского. Если хочется эмигрировать, найти работу в международной компании — диплом IELTS очень пригодится. Шкала оценок — от 0 (от испытуемого не удалось получить даже внятного мычания) до 9 (экcперт — испытуемый чертовски хорош и может устроиться даже редактором лондонской газеты).
Для учебы, например, в США, нужно не менее 6.5 баллов (бывает и 6, но не часто), для работы — 7 и выше. А для эмиграции, допустим, в Канаду — чем выше оценка, тем лучше. Мой прогнозируемый балл перед сдачей теста — 5.5. Значит, что я могу читать газеты, смотреть кино, вести беседы в знакомых ситуациях, писать ответы на письма. Но для работы в центральном офисе Гугла явно недостаточно.
Что же делать, чтобы подтянуть уровень языка? Конечно же, начать использовать его в своей жизни как можно чаще и больше. Например, читать книги на английском.
+86
Information
- Rating
- Does not participate
- Location
- Тверь, Тверская обл., Россия
- Date of birth
- Registered
- Activity