Pull to refresh
2
0

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

Send message

Диагностика утечек памяти в Java

Reading time2 min
Views57K
В данной заметке я хочу показать каким образом можно определять и устранять утечки памяти в Java на примере из моей повседневной работы. Мы не будем здесь рассматривать возможные причины появления утечек, об этом будет отдельная статья, так как тема достаточно обширная. Стоит заметить, что речь пойдет о диагностике именно Heap Memory, об утечках в других областях памяти будет отдельная статья.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments22

7 способов использовать groupingBy в Stream API

Reading time2 min
Views136K

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


Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments7

Самое опасное слово в разработке программного обеспечения

Reading time2 min
Views37K
«Просто размести это где-нибудь на сервере».

«Просто добавь кнопку “Избранного” справа от элемента».

«Просто добавь [вставьте здесь сложную опцию] в экране настроек».

Использование слова «просто» указывает на множество сделанных допущений. Несколько месяцев назад Брэд Фрост поделился некоторыми мыслями, какое отношение к знанию имеет это слово.

Слово «просто» заставляет меня чувствовать себя идиотом. «Просто» предполагает, что у меня есть определённый бэкграунд, что я изучал определённые предметы в университете, что я хорошо разбираюсь в определённых технологиях и прочитал все правильные книги, статьи и справочные ресурсы.
Читать дальше →
Total votes 68: ↑58 and ↓10+48
Comments87

Максимально просто про перебор комбинаций в реальных бизнес-задачах

Reading time4 min
Views10K
Если начать искать материал про перебор комбинаций, возникает масса примеров как перебрать все сочетания всех букв или всех цифр. Но как создать все сочетания элементов матрицы, в которой заранее неизвестна размерность, не углубляясь в Иосифа Романовского и его «Дискретный Анализ», такого материала я не нашел, поэтому и решил написать его здесь. Вдруг кому-то понадобится.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments6

43 полезных сервиса для управления проектами. Без эпитетов

Reading time13 min
Views692K
Дано: собственные и аутсорс-проекты, некоторые участники работают удаленно.

Требуется: необходимо быстро назначать задачи исполнителям, планировать спринты, трекать выполнение и статусы, визуализировать процессы и делиться результатами с заказчиками.

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

Изначально сервисов было более 100, но постепенно список сокращался, и мы остановили наш выбор на трех, удовлетворяющих вместе наши нужды лучше всего: Jira, Slack и GanttPro. Но, если вдруг эти сервисы не помогут вам в планировании задач и работы с командой, делюсь с вами полным списком:

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




Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments46

Основы регулярных выражений в JavaScript

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


Мощная картинка для привлечения внимания :) Осторожно, может засосать!

Но, на самом деле, регулярные выражения — это мощный инструмент, который может помочь вам сэкономить уйму времени. В этом материале мы рассмотрим основы регулярных выражений в JavaScript.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments20

Импортируем DXF чертеж в программе на Java, наступая на все грабли этого «простого» формата

Reading time7 min
Views18K
AutoCAD и подобные ему САПР давно уже стали стандартом в области проектирования, и неудивительно что таким же стандартом стали широко используемые в них форматы файлов DWG/DXF. Так что если вы разрабатываете какое-то решение для архитекторов и проектировщиков, то умение работать с этими форматами (ну или хотя бы с одним из них) — must have фича вашего продукта.



В рамках своего вебсервиса для симуляции движения пешеходов пришлось и мне озаботиться импортом генпланов в этих форматах. Раньше с САПР я дела не имел, поэтому наивно думал «да что там, подумаешь — еще один формат чертежей, линии и многоугольники, что там может быть сложного?». Но в процессе работы выяснилось что сложного там может быть достаточно, некоторые нюансы вполне похожи на древние костыли, тянущиеся из глубин веков, при этом многие вещи толком не документированы в спецификациях самого формата (например работа с блоками или с кривыми). Видимо они считаются очевидными для любого чертежника, но что делать если вы родом из другой области, и таких знаний не имеете?

В общем под катом — перечисление граблей и решений, которые не удалось нагуглить и пришлось добывать полуночными бдениями над чертежами.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments4

Подключаем принт-сервер

Reading time4 min
Views76K
Сегодня мы протестируем принт-серверы D-Link, подключенные к принтеру OKI.

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

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

Печатаем по сети на любом Windows-принтере

Reading time3 min
Views186K
Если у вас есть принтер, подключенный к Windows машине, то настроить его для сетевой печати на Mac достаточно просто, даже если драйверов для OSX для этого принтера не существует.

Для этого нужны три вещи:
  • Принтер, исправно работающий на Windows машине
  • Ghostscript — эмулятор PostScript принтера
  • RedMon — Redirection Port Monitor
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments8

Углубляясь в Graphics2D

Reading time32 min
Views77K
Добрый день, Хабражители!

Сегодня я опять постараюсь привлечь Ваше внимание к некоторым сторонам и тонкостям работы с графикой в Java. Я уже кратко описал в предыдущей статье некоторые доступные средства и способы создания компонентов и UI, но это лишь вершина айсберга. Именно поэтому я хочу уделить отдельное внимание (и статью) именно работе с графикой. Естественно имеется в виду Graphics2D – Java 3D это большая отдельная тема (возможно о ней еще пойдет речь в дальнейшем, но не сегодня).

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

Начнем с того, что если рассматривать любой компонент с точки зрения MVC – он состоит из 3ех частей:
Model – модель, которая хранит в себе данные о состоянии компонента и на основе которой строится внешний вид
View – непосредственно визуальное отображения компонента
Controller – отвечает за управление компонентом (события от клавиатуры, мыши и прочих устройств ввода)

Фактически, все стандартные компоненты Swing построены по паттерну MVC. К примеру в JButton — ButtonModel отвечает за поведение и состояние кнопки (Controller и Model), а ButtonUI в свою очередь за внешнее её представление (View). В итоге на долю самого класс JButton практически ничего не остаётся. Речь пойдет по большей части о реализации внешнего представления компонентов (View), и если уточнять — о Graphics2D, на основе которого, фактически, рисуется весь интерфейс.

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

Читать далее...
Total votes 82: ↑78 and ↓4+74
Comments71

Символьное решение задач нелинейного программирования

Reading time5 min
Views13K

Введение


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

Подробное описание использования символьных вычислений приведено в публикации [1] под названием «Введение в научный Python» в разделе «Символьные вычисления».

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

Постановка задачи


Привести примеры символьных вычислений для безусловного экстремума дифференцируемой нелинейной функции цели с определением достаточных условий существования экстремума по матрице Гессе. Рассмотреть так же задачу условного нелинейного программирования с линейными ограничениями при помощи множетелей Лагранжа.

Для того, чтобы определиться с терминологией приведу следующее определение [2]. Задачей нелинейного программирования (задачей НП) называется задача нахождения максимума (минимума) нелинейной функции многих переменных, когда на переменные имеются (не имеются) ограничения типа равенств или неравенств.

Символьное вычисление безусловного экстремума дифференцируемой функции трёх переменных


Несмотря на сложность решаемых задач при символьном решении всё становится простым и наглядным. Рассмотрим листинг первого примера.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments3

Принт-сервер на linux с интеграцией в AD

Reading time12 min
Views49K
В данной статье я хотел поселиться опытом по созданию принт-сервера на базе linux с интеграцией в AD. Под интеграцией понимается ввод linux сервера в домен Windows и расшаривание Cups принтеров через Samba, включая драйвера принтеров. Возможно коряво выразился, но если проще, то это выглядит так — для того, чтобы установить принтер пользователю Windows, достаточно нажать«установить новый принтер», вывести список принтеров в AD и клацнуть на нужный принтер — принтер установится автоматически с установкой всех необходимых драйверов. При этом, все права на управление, доступ, печать подтянутся из AD.

Часть 1. Тонкости настроек


Исходные данные


  • Домен контроллер — Windows Server 2008 R2 (AD, DNS, DHCP) IP — 10.10.15.31
  • Имя домена — INITIAL
  • Принт сервер — ОС linux (я использую OpenSUSE 13.2 x64, kernel 3.16.7-42-default) IP — 10.10.15.11
  • kerberos 1.12.2-24.1
  • winbind 4.2.4-40.1
  • LDAP 2.4.39-8.9.1
  • Samba 4.2.4-40.1
  • CUPS 1.5.4-21.9.1
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments29

Попиксельная заливка экрана в Wolfenstein 3D

Reading time4 min
Views42K
В коде id Software порой встречаются бесподобные жемчужины. Самая знаменитая — это, конечно, 0x5f3759df, удостоившаяся даже комикса на xkcd. Здесь же речь пойдёт о заливке экрана: пиксели закрашиваются по одному в случайном порядке, без повторов. Как это сделано?

Читать дальше →
Total votes 152: ↑151 and ↓1+150
Comments96

Резервное копирование не «для галочки». Часть первая: мониторинг, бэкапы баз данных и реплики

Reading time6 min
Views23K
Создание скриптов резервного копирования всегда представляется простой, нудной и очень обычной задачей. Напиши скрипт, поставь его в крон, проверь, что он сработал — казалось бы все, да? Но это только верхушка айсберга, а под водой скрывается огромное количество проблем. Все помнят недавную проблему на gitlab, когда оказалось, что операция по удалению данных была проведена не на резервном, а на основном сервере БД, бэкапы оказались размером в 0 байт, бэкапы в S3 недоступны, но, на счастье, резервная копия оказалась на одном из других серверов.

image

Как быть уверенным, что резервное копирование действительно работает? И что даже если скрипты работают, то данные в архивах есть? Что бэкапится именно то, что нужно? По нашей статистике, проблемы с резервным копированием происходят раз в 21 день. Если вы не проверяли ваши бэкапы дольше этого времени — возможно, у вас есть проблемы. В посте мы расскажем о своем опыте по созданию системы резервного копирования в гетерогенной инфраструктуре из 2000 машин, 20 терабайт ежедневных бэкапов самых разных систем, проблемах, которые мы встречали на своем пути, и как мы их решаем.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments22

Улучшаем интерфейс Java-приложения

Reading time27 min
Views100K
Добрый день, Хабражитель!

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

Итак, в данном посте я постарался изложить самые важные и значимые на мой взгляд моменты по работе со Swing и графикой — как создавать компоненты, как стилизовать интерфейс, чего делать не стоит и многое другое…

Читать дальше →
Total votes 118: ↑113 and ↓5+108
Comments71

Генерация документов — взгляд изнутри

Reading time3 min
Views4.9K
Создание модуля генерации документов только на первый взгляд может показаться делом простым. На самом деле, чтобы создать такой модуль, надо решить несколько проблем, без решения которых его реализация будет неполноценной. Функционал генератора документов должен уметь решать проблемы, идущие в виде требований из реальной жизни. Рассмотрим одну из множества проблем.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments9

Information

Rating
Does not participate
Location
Витебск, Витебская обл., Беларусь
Date of birth
Registered
Activity