Pull to refresh
28
0.2
Михаил @Flammar

Java (+Javascript) fullstack developer

Send message

Garbage Collection наглядно

Reading time10 min
Views288K
В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
Читать дальше →

Дюк, вынеси мусор! — 1. Введение

Reading time13 min
Views238K


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

Попробуем в нескольких статьях пройти путь от описания базовых идей, лежащих в основе всех сборщиков мусора, до разбора алгоритмов работы и возможностей тонкой настройки различных сборщиков Java HotSpot VM (вы ведь знаете, что таких сборщиков четыре?). И самое главное, рассмотрим, каким образом эти знания можно использовать на практике.
Узнать

Мягкие ссылки на страже доступной памяти или как экономить память правильно

Reading time13 min
Views169K
image
Все java-разработчики, рано или поздно, встречаются с пресловутой ошибкой OutOfMemoryError. 
После этой встречи мы начинаем более бережно относится к используемой памяти, экономить ее. Начиная с версии 1.2 в Java появился пакет java.lang.ref.* с классами SoftReference, WeakReference, PhantomReference. Далее я расскажу вам о том, как помогут эти классы в борьбе с OutOfMemoryError. И что более интересно, приведу реальные примеры их использования. Начнем.
Читать дальше →

Идеальный Мини-Хакинтош

Reading time6 min
Views133K
image

Когда в 2005 году Apple перешла на платформу Intel, энтузиасты со всего мира задались целью установить MAC OS X на обычные PC (Хакинтош). На пути реализации этой затеи стояли четыре причины. 2 физические и 2 юридические. Дело в том, что для запуска компьютера MAC используется не привычный BIOS, а собственный EFI загрузчик. Вторая причина, это чип SMC который установлен в каждом компьютере Mac. Он генерирует ключи для запуска всех системных приложений MAC OS X. Благодаря нашему соотечественнику под ником Netkas, удалось обойти эти два ограничения созданием эмулятора загрузчика EFI (Chameleon, Chemera, Clover) и эмулятора чипа SMC (FakeSMC.kext). Этих двух программных решений достаточно, что бы установить MAC OS на PC.
Читать дальше →

Почему Hackintosh уже актуален. Развенчание мифов

Reading time7 min
Views136K

Каждому iOS разработчику нужен свой уголок с печеньками, плюшевой уточкой и шайтан-машиной на OSX.


В свете перехода на Swift, мощность железа стала особенно востребована. Чтобы комфортно разрабатывать под айфоны, нужен как минимум процессор с частотой 3+ ghz, SSD на 120-250Gb и оперативы гигов 16. Все это как раз для того, чтобы не было желания посмотреть футбол, пока запускается проект или открывается interface builder.


А знаете, что еще было всегда актуально? Сумасшедшие цены на яблочные устройства:


image


PC с таким же, плюс-минус, железом можно запросто собрать всего за 30.000 рублей! (инфа на ноябрь 2016). Многие, конечно, думают, что раз компания покупает железо, то значит финансы бесконечные, можно не стесняться в средствах. Если вы работаете в Google, то вам повезло и жизнь хороша. Но в остальных случаях это не так.


Что же делать? Не разрабатывать же под Android в конце концов?


Под катом мы узнаем о современном Hackintosh, его роли в разработке, способам безболезненной установки и настройки, услышим мнение людей, работающих на нем не первый год, и проведем тест на iOS инструментах.


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

«Нам проще на листочках»: почему в российских компаниях проваливаются проекты по автоматизации

Reading time3 min
Views20K


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

Рядовым сотрудникам почти никогда не нравится идея внедрения «Планадо» — никто не любит контроль. И не всегда руководству компании хватает сил этому противостоять. Сегодня мы расскажем о том, как потеряли одного из заказчиков.
Читать дальше →

7 советов начинающему ИП, чтобы избежать проблем (что-то вы точно из этого не знаете)

Reading time10 min
Views1.1M


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


А для тех, кто открыл ООО, мы подготовили: 10 вещей, которые обязательно нужно сделать после регистрации ООО
Читать дальше →

9 нюансов в работе инди-разработчика, о которых мне никто не рассказывал

Reading time11 min
Views28K
Продолжаем переводить иностранные статьи по созданию игр в блоге программы «Менеджмент игровых интернет-проектов». На этот раз создатель игры SanctuaryRPG, Рагхав Матур расскажет нам о некоторых нюансах в работе инди-разработчика.


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

5 причин не использовать свой личный счёт в фрилансе

Reading time6 min
Views98K

Дано: программист Василий Иванов (ещё до того, как зарегистрировал ООО) в свободное от основной работы время фрилансил, выполняя заказы и получая оплату от клиентов на свою карту физического лица. В какой-то момент клиентов стало так много, что Василий решил легализоваться и открыть ИП.
Изучив законодательство, он узнал, что индивидуальный предприниматель не обязан открывать расчётный счёт. «Прекрасно, — решил Василий, — продолжу принимать оплату на свою карту, ведь это удобно, а главное, бесплатно. Не придётся ежемесячно платить банку за ведение расчётного счёта».
Читать дальше →

Что звуковые чёрные дыры могут рассказать нам о настоящих

Reading time7 min
Views15K

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


image
«red herring», т.е. «копчёная селёдка» – фразеологизм для обозначения отвлекающего манёвра (селёдка использовалась, чтобы сбить со следа охотничьих собак).

В 1972 году на лекции в Оксфордском университете молодой физик Уильям Унру попросил аудиторию представить рыбу, кричащую от страха во время преодоления водопада. Пусть вода падает так быстро, что в какой-то определённой точке обгоняет скорость звука. Тогда, после того, как рыба пройдёт эту точку, вода будет падать вниз быстрее, чем звуковые волны распространяться по ней вверх, и рыбу уже нельзя будет услышать в верховьях реки.

Унру пояснил, что нечто подобное происходит, когда вы падаете в чёрную дыру (ЧД). Когда вы приближаетесь к одному из этих сверхплотных объектов, ткань пространства-времени искривляется всё сильнее, что эквивалентно усилению гравитации, согласно ОТО Эйнштейна. В точке невозврата, известной, как «горизонт событий», кривизна пространства-времени становится столь сильной, что сигналы уже не могут выкарабкаться по ней наружу. В пределах горизонта событий остаётся даже свет, пойманный гравитацией ЧД, из-за чего ЧД невидимы.
Читать дальше →

Ваш язык программирования — отстой

Reading time54 min
Views140K
1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

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

Функциональный TypeScript

Reading time5 min
Views13K

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


Примечание от переводчика: весь код для удобства я оформил в репозитории.


Для этого мы будем использовать три техники:


  • функции вместо примитивов
  • трансформация данных через pipeline
  • выделение общих (generic) функций

Начнём же!

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

Советы западных консалтинговых компаний. Часть 1, теоретическая

Reading time19 min
Views38K


В статье «Как новые руководители разрушают доверенные им компании» мы остановились на роли в этом процессе иностранных консалтинговых фирм.

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

Хотя никто и не будет спорить, что полезные советы по ведению государственных дел или бизнеса диссонируют с зажиманием РФ по всем фронтам. Санкции, «санитарный кордон» из цветных революций, запрет банкам покупать облигации РФ, снижение рейтинга для страны в целом и по предприятиям в частности, обещания порвать экономику в клочья из уст Президента США, прижали «большой спорт» и даже паралимпийцев не пожалели. Госдеп выпустил инструкцию о запрете работы компаний с Россией, а Вице-Президент США Байден обещает кибератаки.

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

Но всё же, как эти консалты умудряются «угодить и нашим и вашим»?
Как они ведут дела так, что их деятельность одновременно одобряют и руководители компаний РФ, и западные спецслужбы?

Это не магия и не искусство, это — отработанная технология.

В МТИ разработали 3D-печать корпусов роботов с амортизацией

Reading time4 min
Views7.7K


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

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

Двенадцать полезных Chrome DevTools Tips

Reading time4 min
Views83K
В данной статье мы рассмотрим некоторые функции инструментов разработчика Chrome. Конкретно я использую Chrome Canary и вам советую. И не потому, что это отсылка на маленьких милых птиц, которые пожертвовали своими жизнями чтобы мы могли добывать свежий уголь.

Некоторые из DevTools функций вы возможно не знали. Я буду очень счастлив, если хотя бы одну из них вы найдете для себя полезной.

(В статье ниже присутствуют анимированные гифги, которые начинают раздражать после первого цикла. Поэтому я советую открыть dev tools и удалить DOM ноды, которые отвечают за изображения.)

Итак, поехали:

Копируем переменную в буфер обмена


Об этой возможности я узнал из комментариев, и считаю ее достаточно полезной чтобы быть описанной в начале. Иногда бывает нужно скопировать содержимое переменной в буфер обмена. Например html код или json объект. Для этого можно использовать copy функцию.

copy (someVariable)

Теперь текстовое представление переменной скопировано в буфер обмена.
Читать дальше →

Запуск NodeJS-приложения на Android

Reading time3 min
Views84K
Без сомнения, вам понравится запускать NodeJS на своем Android-устройстве. Благодаря эмулятору терминала и Linux-окружения для Android, разработка веб-приложений на смартфоне перестанет быть для вас проблемой.
Читать дальше →

Подарок на 1 сентября всем поклонникам цифровой схемотехники и архитектуры компьютера

Reading time2 min
Views29K
hh2e_lecture_slides_banner_3

Господа! Сегодня на 1 сентября, в День Знаний, группа из украинских преподавателей вузов, их аспиранток, а также российских инженеров, решили, по согласованию с британскими издателями Elsevier через компанию Imagination Technologies, сделать небольшой подарок всем учителям компьютерной архитектуры и цифровой схемотехники, особенно тем, которые используют популярный учебник Дэвида Харриса и Сары Харрис.

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

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

Итого, вырезка из слайдов, чтобы вы поняли, о чем идет речь:
Читать дальше →

Небольшой скрипт для отслеживания цен avito из Google Spreadsheet

Reading time2 min
Views47K
Хочу поделиться с сообществом небольшим скриптом для загрузки цен с сайта объявлений AVITO в Google Spreadsheet. Вдруг кому-нибудь еще пригодится.

Логика такая — в цикле бежим по ячейкам таблицы с адресами и запрашиваем странички. Из полученных страниц получаем цену и подставляем в соседние ячейки. Запуск скрипта через пункт меню Avito -> Update Prices.

Page Sample
(наименнннование sic!)
Читать дальше →

Интервью с мамой, банковским программистом на COBOL'е

Reading time7 min
Views59K


Фото из Гугла, это не мама автора


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


Объясню немного


Мир банковского программного обеспечения — это другая вселенная. Она сильно отличается от той, к которой привыкло большинство из нас. Я публикую этот пост на HN и на Reddit. Публикую интервью не в виде вопросов-ответов, а в виде рассказа. Я добавил некоторые вопросы и ответы в нижнюю часть поста.


1991


Год, когда она начала внутреннее обучение в банке Nordea, который тогда назывался Nordbanken (Северный банк). В 2001 году его переименовали в Nordea. Во время обучения она должна была проходить различные тесты, в первую очередь тест IQ, чтобы показать, что она обладает интеллектом, достаточным для работы в этой области. Тест на психологическую устойчивость — что у неё достаточно нервов для этой специфической работы и тест на многозадачность, который она завалила с оценкой 22/100. Остальные тесты она прошла успешно и заняла одну из 16 доступных позиций.


Должность звучала «как программист мэйнфреймов IBM на языке COBOL», и до сих пор, уже 25 лет, моя мама работает на этой должности в том же банке.


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

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

История URL'а: домен, протокол и порт

Reading time13 min
Views43K

11 января 1982 года двадцать два специалиста по информатике встретились, чтобы обсудить «компьютерную почту» (ныне известную как "электронная почта"). Среди участников был будущий основатель Sun Microsystems, парень, который сделал Zork, чувак, создавший NTP, и еще один, который убедил правительство платить за Unix. Перед ними стояла задача решить проблему: в ARPANET было 455 хостов, и ситуация выходила из под контроля.



Проблема возникла из-за того, что ARPANET переходил с оригинального протокола NCP на протокол TCP/IP, на котором сейчас существует Интернет. После такого перехода быстро должно было появиться множество объединенных сетей (inter...net), которым требуется иерархическая система доменов, чтобы ARPANET мог резолвить свои домены, а другие сети — свои.

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

Information

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