Pull to refresh
30
0
Send message

Расширения Chrome для программистов и сочувствующих

Reading time6 min
Views33K

На Хабре уже есть посты в духе «10 браузерных расширений, которые нужны КАЖДОМУ УВАЖАЮЩЕМУ СЕБЯ РАЗРАБОТЧИКУ». Но в них меня смущает то, что там вперемешку совсем разные вещи для разных людей. От React Developer Tools до съёмки полностраничных скриншотов — и всё это просто списком через запятую.

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

Разумеется, в комментариях приветствуются дополнения, мне знакомо далеко не всё.

Читать далее
Total votes 33: ↑30 and ↓3+27
Comments12

Java собеседование. Коллекции

Reading time10 min
Views890K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Total votes 97: ↑86 and ↓11+75
Comments306

Пишем и отлаживаем компонент для GWT и Vaadin

Reading time13 min
Views18K
image


Фреймворки Google Web Toolkit и Vaadin достаточно хорошо себя показывают, когда вы просто используете их. Если вдруг вам понадобилось расширить их функциональность, то вам придётся серьёзно попотеть. В этой статье я хочу рассказать, как написать простой компонент на GWT, добавить к нему серверную часть Vaadin и использовать в своём приложении. Я не буду создавать некий совсем пустой GWT/Vaadin проект и с самого начала настраивать компиляцию GWT, вместо этого возьму приложение на базе CUBA.Platform, в котором и реализую сам компонент, а затем попробую в деле. Так будет видно, насколько хорошо всё впишется в настоящее приложение. Отдельное внимание я бы хотел уделить отладке компонента, поскольку она нетривиальна и всегда вызывает трудности у разработчиков.

Хочу предупредить, что не всё описанное в статье относится к GWT и Vaadin, часть шагов и приёмов применимы только в контексте использования CUBA.Platform, за счёт этого сильно упрощена настройка окружения и некоторые рутинные действия.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments9

немного о SPARQL точке доступа

Reading time2 min
Views2.6K
SPARQL (рекурсивный акроним, SPARQL Protocol and RDF Query Language) — разработанный стандарт семантической паутины, прошедший стандартизацию RDF Data Access Working Group (DAWG) консорциума World Wide Web (W3C).©Wikipedia

Задача состоит в том, чтобы создать SPARQL точку доступа
В английских источниках предлагаются вариации названия от entry point до end point. Насколько я понимаю, это все про точку доступа.

сначала описание приложения:
База знаний — OWL, построена в Protege, поэтому соответствует логике image
Модуль логического вывода — пока не прикручен
язык программирования — java

SPARQL точка доступа по сути представляет собой комбинацию языка запросов SPARQL и протокола SPARQL. Все это также можно назвать веб-сервисом(веб-службой).

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

Основные возможности точки доступа:
* Query composition — A client must know the capabilities of a server in order to compose suitable queries. ODBC and JDBC have fairly extensive metadata about each DBMS's SQL dialect and other properties. These may in part serve as a model.
* Content Discovery — What is the data about? What graphs does the end point contain?
* Query planning — When making an execution plan for federated queries, it is almost necessary to know the cardinalities of predicates and other things for evaluating join orders and the like.
* Query targeting — Does it make sense to send a particular query to this end point? The answer may contain things like whether the query could be parsed in the first place, whether it is known to be identically empty, estimated computation time, estimated count of results, optionally a platform dependent query plan.


Конечно, все сразу не получится, начнем с малого.
Здесь можно ближе присмотреться к sesame
Все бы хорошо, однако нам нужен SPARQL, здесь же предлагается альтернативный язык запросов SeRQL. Цитата «SeRQL (»Sesame RDF Query Language", pronounced «circle») is an RDF query language that is very similar to SPARQL, but with other syntax. SeRQL was originally developed as a better alternative for the query languages RQL and RDQL. A lot of SeRQL's features can now be found in SPARQL and SeRQL has adopted some of SPARQL's features in return. "

Есть еще инструменты для php типа ARC.

Речь же идет о реализации sparql точки доступа на java
Просмотрев все предлагаемые решения(собственно, со SPARQL в java не густо, или я не там и не то ищу ), остановилась на ARQ в Jena
в общем, да, написано немного, но хоть какие-то зацепки есть
Дальше напишу, что из этого вышло
Total votes 3: ↑3 and ↓0+3
Comments4

Постоянно отваливается Flash Plugin в Google Chrome? Есть решение!

Reading time3 min
Views607K
Преамбула.

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

Надо заметить, что Хром я люблю и пользую для динамического контента, вроде Ютуба и всего флэш- и js- содержащего (по совершенно очевидным причинам).

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

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

Решение, к слову сказать, оказалось довольно простым, и, одновременно, действенным.
Хочу решение!
Total votes 59: ↑44 and ↓15+29
Comments36

Исключения в Java, Часть II (checked/unchecked)

Reading time9 min
Views285K
Это вторая часть статьи (первая часть — try-catch-finally), посвященной такому языковому механизму Java как исключения. Она имеет вводный характер и рассчитана на начинающих разработчиков или тех, кто только приступает к изучению языка.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

1. Магия checked/unchecked
2. Пессимистичный механизм
3. throws с непроверяемым (unckecked) исключением
4. Множественные исключения
5. Или catch, или throws
6. Поведение компилятора/JVM
7. Overriding и throws
8. Передача свойства по наследству


1. «Магия» checked/unchecked



Механизм исключительных ситуация в Java связан с двумя элементами «магии», т.е. поведения, которое никак не отражено в исходном коде:
1. «Магию» java.lang.Throwable — в throw, catch и throws могут стоять исключительно Throwable или его наследники (мы уже разбирали в предыдущей лекции). Это «право» находиться в throw, catch и throws никак не отражено в исходном коде.
2. Все исключительные ситуации делятся на «проверяемые» (checked) и «непроверяемые» (unchecked). Это свойство присуще «корневищу» (Throwable, Error, Exception, RuntimeException) и передается по наследству. Никак не видимо в исходном коде класса исключения.
Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments12

Linux для профессионалов: видео-монтаж (и немножко композинг)

Reading time9 min
Views85K
Привет коллеги. Думаю, пришло время продолжить начатый некогда цикл «Linux для профессионалов». Сегодня я бы хотел рассказать о монтаже видео на примере ролика, который мы сняли прошлым летом для нашей пражской затеи с электронным GPS аудио-путеводителем.

Собственно ролик (если быть точным, то это демонстрационный мини-фильм).



Весь цикл постобработки и монтажа выполнен с использованием программного обеспечения под управлением ОС Linux.

По-правде говоря, есть один нюанс. Я для подготовки титров сперва использовал AI, запущенный под Wine. Связано это было отчасти с тем, что я, будучи скован врененными рамками, не уделил должное внимание поиску native альтернатив. В действительности, как оказалось, такая альтернатива, вполне лежащая на поверхности, существует. Ниже расскажу подробнее.

Итак, по-порядку.
Читать дальше →
Total votes 84: ↑78 and ↓6+72
Comments60

Отладка Java приложения, когда оно совсем не ждёт — добро пожаловать в InTrace подход

Reading time6 min
Views31K
Доводилось ли вам когда-либо исследовать шаг за шагом выполние некого Java кода, который не удосужились снабдить средствами логирования или прочими механизмами наблюдения?
Усложним задачу тем, что не будем перекомпилировать исследуемый код, да и вообще перезапускать существующий процесс (тот случай, когда непонятное поведение было да и при перестарте сплыло). Java машина, конечно же, запущена с самыми обыкновенными опциями (без параметров для аттача дебагера или ещё каких наворотов).
А так хочется понять, что же происходит.

Именно этим мы и займёмся.
Узнать больше ...
Total votes 36: ↑34 and ↓2+32
Comments12

Горизонтальное масштабирование небольших Web-приложений на Java (вопросы собеседований)

Reading time4 min
Views35K
Эта тема была поднята в ходе нескольких (3+) собеседований который я прошёл за последние полтора месяца — в разных вариациях но примерно об одном. Казалось бы, известные вещи — но собрав все ответы и объяснения какие я давал (и кое-что что нашёл позже в гугле), решил сохранить их не у себя в гугл-драйве, а написать краткий обзор.

Речь шла о небольших и типовых приложениях Enterprise / Web на Java, каких пишется множество (ну такие, на 10-100 тысяч клиентов, миллион посещений и т.п.). Пусть это будет обобщённый диалог в виде вопросов и ответов.

 

В: Допустим, у вас есть приложение (самое обычное — JSP, Spring, Hibernate например) развернутое на томкате (Apache Tomcat) и вы однажды замечаете что сервер с томкатом загружен на 80% в среднем. Что делать?

Читать дальше →
Total votes 53: ↑44 and ↓9+35
Comments87

Введение в Акторы на основе Java/GPars, Часть I

Reading time15 min
Views13K
Кратко рассматривается API библиотеки GPars и решение многопоточной задачи средней сложности, результаты которой могут быть полезны в «народном хозяйстве».

Данная статья написана в ходе исследования различных библиотек акторов, доступных Java-программисту, в процессе подготовки к чтению курса «Multicore programming in Java».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

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

GPars — библиотека написанная для Clojure с широкой поддержкой различных подходов к параллельным вычислениям.
Плюсы GPars
  • Исходный код написан на Java (в отличии от Akka, написанной на Scala). Всегда интересно посмотреть «что под капотом» на «родном» языке программирования
  • GPars представляет собой целый «зоопарк» подходов (Actor, Agent, STM, CSP, Dataflow)
  • GPars использует классы из runtime-библиотеки Clojure, написанной на Java. Интересно покопаться

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments9

Аннотации в Java, часть I

Reading time5 min
Views80K
Это первая часть статьи, посвященной такому языковому механизму Java 5+ как аннотации. Она имеет вводный характер и рассчитана на Junior разработчиков или тех, кто только приступает к изучению языка.

Я занимаюсь онлайн обучением Java и опубликую часть учебных материалов в рамках переработки курса Java Core.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Мой метод обучения состоит в том, что я
  1. строю усложняющуюся последовательность примеров
  2. объясняю возможные варианты применения
  3. объясняю логику двигавшую авторами (по мере возможности)
  4. даю большое количество тестов (50-100) всесторонне проверяющее понимание и демонстрирующих различные комбинации
  5. даю лабораторные для самостоятельной работы

Данная статье следует пунктам #1 (последовательность примеров) и #2(варианты применения).
Читать дальше →
Total votes 47: ↑42 and ↓5+37
Comments21

Лямбда-выражения в Java 8 — Простые примеры того, как они могут облегчить вашу жизнь

Reading time5 min
Views166K


Вот и состоялся релиз Java 8. Кто-то по-настоящему ждал её и тестировал предрелизную версию, считая недели до марта, для кого-то смена цифры в версии JDK была лишь поводом пару раз поиграть с обновленным языком в домашней IDE без отрыва от работы (ввод языка в production всегда занимает некоторое время), кто-то просто не нуждается в новых фичах, им и возможностей «семерки» хватает с лихвой. Тем не менее, восьмую Java ждать стоило — и не просто ждать, но и внимательно присмотреться к некоторым ее нововведениям, ведь в этой версии их действительно немало, и если ознакомиться с ними поближе, то не исключено, что хорошо знакомый язык предстанет перед вами в совершенно новом свете, порадовав возможностью писать еще более красивый и лаконичный код. И если уж говорить про новые возможности Java 8, было бы странно не начать с лямбда-выражений.
Читать дальше →
Total votes 45: ↑39 and ↓6+33
Comments33

Алгоритмы о выборе дороги и сетях. Сети Штейнера. Лекция Владимира Протасова в Яндексе

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

Впервые она появилась, когда еще никаких практических надобностей для больших сетей не было: в тридцатые годы XX века. На самом деле Штейнер начал ее изучать еще раньше, в XIX веке. Это была чисто геометрическая задача, практические приложения которой стали известны только несколько десятилетий спустя.

Разговор пойдет о той области математики, которая впоследствии выросла в теорию больших сетей и разбилась на несколько областей. Это прикладная отрасль, которая задействует очень много методов из других математических дисциплин: дискретной математики, теории графов, функционального анализа, теории чисел и т.д. Бурное развитие теории больших сетей пришлось на конец девяностых и начало двухтысячных годов. Связано это конечно, с прикладными задачами: развитием интернета, мобильной связи, транспортных задач для больших городов. Кроме того теория сетей используется в биологии (нейронные сети), при построении больших электронных плат и т.п.



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

Начать рассказ стоит с истории о том, как на Малом мехмате двум группам учеников – восьмиклассникам и одиннадцатиклассникам дали решать одну и ту же задачу. Четыре деревни расположены в вершинах квадрата со стороной четыре километра. Существует ли система дорог, которая связывала бы все эти деревни между собой и имела бы суммарную длину не превосходящую 11 километров.
Конспект лекции
Total votes 60: ↑59 and ↓1+58
Comments5

Извлекаем золото из старой электроники

Reading time2 min
Views777K


У каждого из нас скопились десятки ненужных и сломанных гаджетов. Оказывается, все эти приборы способны принести немного пользы перед своим уничтожением.

Инженер и химик Джозеф Мурчинсон (Josehf Murchison) опубликовал на сайте Instructables пошаговую инструкцию, как выплавлять золото из старых электронных приборов, которые вы собирались выбросить на свалку: старые ноутбуки, телефоны, камеры, принтеры, сканеры и прочее ненужное барахло.
Читать дальше →
Total votes 219: ↑203 and ↓16+187
Comments204

Передаем файлы на Java с помощью ØMQ и JZMQ

Reading time11 min
Views14K
Приветствую, мы являемся небольшой компанией единомышленников которые разрабатывает продукт предназначенный для управления данными, вне зависимости от их формата и метода хранения — ArkStore, в нашем блоге мы попытаемся поделится опытом, который мы накопили, в ходе, его уже почти двухлетней разработки. Первую статью я решил посветить IO слою и продукту под названием ØMQ (или ZeroMQ). Я попытаюсь рассказать как начать пользоваться ØMQ и как с его помощью можно передавать достаточно большой объем данных.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments4

Пулы соединений к БД — зачем и почему

Reading time5 min
Views79K
Когда Ваш проект начинает пользуется популярностью и каждая миллисекунда обработки запроса от пользователя становится критической, приходится искать узкие места в системе. Часто больше всего времени занимает выполнение SQL запроса из приложения к базе данных. Попробуем разобраться, что можно оптимизировать в программе при работе с БД.
Читать дальше →
Total votes 25: ↑19 and ↓6+13
Comments21

Trove 4.0? Примитивы в стандартном каркасе коллекций из Java 8

Reading time5 min
Views9.7K
Около месяца назад на Хабре была статья про Trove — самую часто упоминаемую библиотеку, когда спрашивают про структуры данных с примитивами на Java. Примерно за пару дней до этого я сел эту библиотеку переписывать. Время решительно кончилось, поэтому делюсь поиском с вами, хотя не очень-то надеюсь, что кто-то продолжит это дело.

На данный момент сделаны хеш-таблицы 6 типов: множества примитивов, объектов и все 4 варианта мапов: примитив — примитив, примитив — объект, объект — примитив и объект — объект, над которыми нависает туча обобщающих интерфейсов.

Меня всегда удивляло, почему все подобные библиотеки создают еще одну иерархию типов, а не встраиваются в давно уже зарекомендовавший себя стандартный каркас коллекций Явы. Никаких принципиальных проблем с этим я не видел и не вижу. Поэтому над моей тучей интерфейсов, как на пантеоне, возвышаются java.lang.Iterable, java.util.Collection и java.util.Map. Я не зря дал ссылки на документацию по Java 8. Реализованы почти все методы из будущих интерфейсов, кроме spliterator(). Можно начинать привыкать.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments31

JAXB и XSLT с использованием StAX

Reading time5 min
Views21K
В одном из проектов понадобилось обрабатывать большие XML файлы, от сотен мегабайт до десятков гигабайт.
Причем выдернуть надо было только некоторые тэги с расположенные на различной «глубине». XSLT «в лоб» ломался от недостатка памяти. Пришлось подумать и вспомнить о потоковом парсере.
Далее
Total votes 10: ↑10 and ↓0+10
Comments2

Information

Rating
Does not participate
Registered
Activity