Search
Write a publication
Pull to refresh
0
0
Send message

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

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

Библиотека для работы с QIWI через SOAP

Reading time4 min
Views18K
Так уж получилось, что мы решили у себя подключить прием платежей через QIWI. Сказано — сделано! Вот только в процессе разработки пришлось столкнуться с убогостью примеров кода от разработчиков киви:
Код сервера, принимающего запрос от киви
<?php
/**
 * На этот скрипт приходят уведомления от QIWI Кошелька.
 * SoapServer парсит входящий SOAP-запрос, извлекает значения тегов login, password, txn, status,
 * помещает их в объект класса Param и вызывает функцию updateBill объекта класса TestServer.
 *
 * Логика обработки магазином уведомления должна быть в updateBill.
 */

 $s = new SoapServer('IShopClientWS.wsdl', array('classmap' => array('tns:updateBill' => 'Param', 'tns:updateBillResponse' => 'Response')));
// $s = new SoapServer('IShopClientWS.wsdl');
 $s->setClass('TestServer');
 $s->handle();

 class Response {
  public $updateBillResult;
 }

 class Param {
  public $login;
  public $password;
  public $txn;      
  public $status;
 }

 class TestServer {
  function updateBill($param) {
  
	// Выводим все принятые параметры в качестве примера и для отладки
    $f = fopen('c:\\phpdump.txt', 'w');
	fwrite($f, $param->login);
	fwrite($f, ', ');
	fwrite($f, $param->password);
	fwrite($f, ', ');
	fwrite($f, $param->txn);
	fwrite($f, ', ');
	fwrite($f, $param->status);
	fclose($f);
	
	// проверить password, login
	
	// В зависимости от статуса счета $param->status меняем статус заказа в магазине
	if ($param->status == 60) {
		// заказ оплачен
		// найти заказ по номеру счета ($param->txn), пометить как оплаченный
	} else if ($param->status > 100) {
		// заказ не оплачен (отменен пользователем, недостаточно средств на балансе и т.п.)
		// найти заказ по номеру счета ($param->txn), пометить как неоплаченный
	} else if ($param->status >= 50 && $param->status < 60) {
		// счет в процессе проведения
	} else {
		// неизвестный статус заказа
	}

	// формируем ответ на уведомление
	// если все операции по обновлению статуса заказа в магазине прошли успешно, отвечаем кодом 0
	// $temp->updateBillResult = 0
	// если произошли временные ошибки (например, недоступность БД), отвечаем ненулевым кодом
	// в этом случае QIWI Кошелёк будет периодически посылать повторные уведомления пока не получит код 0
	// или не пройдет 24 часа
	$temp = new Response();
	$temp->updateBillResult = 0;
	return $temp;
  }
 }
?>

Я конечно понимаю, пример исчерпывающий, но можно ведь было что-нибудь «поготовее» выложить? Поскольку система популярна, как и язык PHP — я решил сразу вынести библиотеку в публичный репозитарий, дабы упростить жизнь тем, кому только предстоит подключать эту систему. Так как в недавнем моем вопросе никто против поста не возражал — выкладываю ее тут.
Описание

Индивидуально предпринимаешь? В кассу!

Reading time1 min
Views171K
С 2013 года индивидуальные предприниматели должны любить Родину больше. В 2 раза.

2012
В 2012 году платеж в ПФР рассчитывается исходя из базовой ставки в один МРОТ, и равен 14386,32 рублей.

2013
Со следующего года платеж будет считаться исходя уже из 2-х МРОТ.
Да еще МРОТ недавно увеличили с 4611 до 5205, на 13%.
Так что, за будущую пенсию теперь придется заплатить 32479,2 рублей.
Ссылка на текст закона.

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

Только 10% программистов способны написать двоичный поиск

Reading time2 min
Views84K
Дональд Кнут (известный тем, что его книги никто не читает) пишет, что хотя первый двоичный поиск был опубликован в 1946 году, первый двоичный поиск без багов был опубликован только в 1962.

Алгоритм двоичного поиска похож на то, как мы ищем слово в словаре. Открываем словарь посередине, смотрим в какой из половин будет нужное нам слово. Допустим, в первой. Открываем первую часть посередине, продолжаем половинить, пока не найдем нужное слово.

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

Так вот я это к чему...

Hyper-V 3.0 против… Или суицидальный холивор

Reading time11 min
Views67K
Всем доброго времени суток!

Сегодня тема для разговора будет уж (как я лично считаю) очень актуальной, если даже не сказать болезненной…
Да-да, я-таки решил провести функционально-экономическое сравнение 2-х ведущих платформ гипервизоров — Hyper-V 3.0 и VMware ESXi 5.0/5.1 между собой… Но потом я решил для полноты картины к сравнению добавить еще XenServer 6 от Citrix…
Я уже в предчувствии камнепада в свой огород, но все же будем держать оборону до конца — просьба занять соответствующую позицию, сторону, лагерь — кому как удобно — и под кат для начала боя…


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

Asterisk: обратный вызов с использованием AMI

Reading time3 min
Views58K
Asterisk Manager Interface (AMI) – это программный интерфейс который позволяет внешним программам как управлять, так и контролировать систему Asterisk. AMI слушает соединения на TCP порту, по-умолчанию это 5038. Клиентская программа может соединяться с AMI, передавать команды в Asterisk, получать ответ о статусе выполнения команд.
В данном посте мы рассмотрим использование AMI на примере решения определенной задачи: настроить Asterisk на генерацию звонков по заданному url, в котором должны устанавливаться параметры звонка.

Настройка Asterisk AMI



Первое что необходимо сделать, это включить AMI и завести пользователя с помощью которого клиентская программа будет аутентифицироваться:

/etc/asterisk/manager.conf
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0


/etc/asterisk/manager.conf
[c2call]
secret=FrUyHn6FSaX
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0
read=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate


Для применения изменений выполним reload:

asterisk -rx "module reload manager"


Теперь нам потребуется создать внутренний номер который, собственно, и будем соединять с вызываемым абонентом:

/etc/asterisk/sip.conf
[3200]
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0
secret=3200
dtmfmode=rfc2833
canreinvite=no
context=OUT_IN1
host=dynamic
type=friend
nat=yes
port=5060
qualify=yes
callcounter=yes
faxdetect=no


После создания внутреннего номера, потребуется перечитать конфигурацию Asterisk:
asterisk -rx "sip reload"


На этом настройка Asterisk завершена.

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

Патч, позволяющий каждому коннекту иметь много user lock объектов

Reading time1 min
Views4.1K
Привет,

Пока был в отпуске, написал патч для MySQL, позволяющий каждому коннекту владеть несколькими user lock объектами.
Патч доступен здесь:

https://code.launchpad.net/~kostja/percona-server/userlock

Это последний percona-server (5.5) + новые пользовательские локи.

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

Модели TCP

Reading time2 min
Views34K
Совсем недавно несколько раз за короткий промежуток времени в разговорах с коллегами натыкался на принципиальное непонимание того простого факта, что тюнинг параметров TCP — это не все, что можно сделать для оптимальной утилизации каналов. Что-что? Какие-такие другие модели TCP? Нафига? Все и так можно подогнать, поигравшись Maximum Window Size, таймингами и прочим. Это конечно все здорово и бывает крайне необходимо, но не все поддается тюнингу через proc или реестр. А именно и например? Сравнить это можно с ситуацией, как если бы мы имели некую формулу и добивались результатов «кручением» в ней неких переменных и коэффициентов. Но можно ли поменять саму формулу?

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

Куда уходит рынок электронных платежных систем в России? Часть 1. Статистика рынка

Reading time11 min
Views43K
Платежные системыНе так давно в одном из журналов я нашел заметку о том, на сколько «ботизированы» социальные сети, в первую очередь FB и VK: как оказалось, миллионные бюджеты, вложенные гигантами рынка в рекламу на этих ресурсах не оправдали себя, т.к. SMM-агентства накручивали голоса и лайки всеми возможными и невозможными путями. Зачем? Собственно ради этих самых миллионов (не голосов, конечно). В принципе, история не новая, т.к. были, например, скандалы подобного рода и с антивирусными компаниями, которые писали зловреды под свои продукты, если говорить о Сети, а если вспомнить недавний ипотечный крах, то можно понять, что и в «реальной» жизни всё ровно то же самое: эффект мыльного пузыря свойственен любому новому рынку.

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

Странное поведение Task Manager в Windows Server 2012

Reading time4 min
Views44K
Краткое содержание: история в картинках, как я «улучшал» Task Manager в Windows Server 2012

Преамбула


Началось всё с того, что я в тестовых целях (выяснить, есть ли принципиальное различие), поставил Windows Server 2012. Для тех, кто не знает, это такая Windows 8, только дороже. Ну, а ещё, от него можно оторвать GUI и поставить всякие разные роли.

Ну так вот, одна из наиболее приятных вещей в Windows 8 для меня — новый Таск Менеджер, и красивый и удобный. Какое же было моё удивление, когда я открыл его в WinServer 2012 и не увидел некоторых данных.
Вот пара картинок для понятности.
Читать дальше →

Государственная итоговая аттестация в школах – не все как у ЕГЭ

Reading time8 min
Views26K
Мы уже рассказывали нашим читателям о том, как решение ABBYY TestReader помогло ЕГЭ встать на ноги. Несколько лет назад нам показалось довольно логичным (а поначалу даже простым) используя полученный опыт, обрабатывать и результаты Государственной итоговой аттестации 9-х классов (ГИА 9 классов).
Напомним, что ГИА —
общее название для всех государственных (итоговых) аттестаций и проводится они в 4, 9 и 11 классах. После долгих изысканий ГИА-11 стал проводиться централизовано по всем регионам РФ, за что и получил свое гордое и отдельное название «единого экзамена». Сие «единообразие» еще не успело толком коснуться ГИА-4, а вот девятиклассники уже несколько лет участвуют в эксперименте по внедрению автоматизированных технологий проведения массовых экзаменов (взамен традиционной письменной формы проведения экзамена).

Итак, что мы имели в далеком 2008 году? Налаженную и в целом надежно функционирующую машину обработки результатов ЕГЭ, которая работает на базе программного комплекса ввода бланков ABBYY TestReader Network.

Чего мы хотели? Применить наши технологии повторно на ГИА-9 и стать еще более инвестиционно привлекательными.

Казалось бы, чего проще? Но, уже ступив на этот путь, мы обнаружили несколько отличий между экзаменами, и это коренным образом определило дальнейшее развитие событий.
В чем же там дело?

Законы Мерфи в IT

Reading time6 min
Views48K
Не так давно мне довелось беседовать с разработчиком, не понимавшим, почему полностью резервированная связь между ЦОДами не может гарантировать 100% доступность сервиса.
Читать дальше →

Настраиваем свой первый VDS сервер в роли веб-сервера

Reading time14 min
Views53K
Добрый день.

Так уж сложилось, что последнее время пришлось достаточно часто менять VDS провайдеров, и каждый раз приходится заново настраивать систему, поэтому решил написать краткий конспект по настройке. Все нижеописанное корректно работает на ОС Linux Ubuntu server 12.04 LTS. В этой статье я опишу как установить и произвести первичную настройку nginx+apache2, eaccelerator, memcached, fure-ftpd, php, mysql, phpmyadmin а также панели управления игровыми серверами — open game panel.
Читать дальше →

Реализация резервирования сервера Asterisk

Reading time9 min
Views33K
Одним из главных критериев при выборе новой АТС это надежность, отказоустойчивость и возможность резервирования системы. Маленьким и средним компаниям обычно хватает простого бэкапа с возможностью восстановиться в течение 24 часов, в то время как для больших компании это очень критично и не может быть и речи о простое телефонной связи. На это обычно компания тратят много ресурсов и денег. С появлением R800 и R850 от компании DIGIUM, asterisk становится действительно надежной системой с полноценным резервированием PSTN линий Е1/T1/BRI и FXO. Под катом подробности установки и настройки двух серверов Asterisk и R850.
Читать дальше →

Борьба с DDoS глазами Highload Lab

Reading time15 min
Views73K
O трендах и тенденциях в DDoS-атаках рассказывает создатель Highload Lab и сети фильтрации трафика QRATOR Александр Лямин. Интервью мы брали еще в начале года, но изменилось пока немногое



DDoS-атаки появились на заре интернета. Знакомство с ними для меня лично началось во время проекта IT Territory в 2003 году, когда игра только стартовала. Она имела достаточно агрессивную рекламную кампанию, в ответ на которую тут же прилетел DDoS от конкурентов. Скажу честно, я растерялся. Больше всего из-за того, что компания, которая оказывала хостинг-услуги, не просто не смогла, а не пожелала бороться с атакой. Ее представители сказали, что это не их проблема.
Читать дальше →

Тариф с доступом только к MSK-IX, DataIX, W-IX или как разгрузить свои европейские сервера

Reading time7 min
Views14K
Уже давно многие наши клиенты или потенциальные клиенты спрашивали «а можно подключить сервер только с трафиком в MSK-IX?» или «а сколько будет стоить, если я буду трафик лить только на MSK-IX? Это будет дешевле?», но тогда такого тарифа у нас не было. Да и технической возможности не было. И вот, пару недель назад, мы наконец-то запустили тариф с доступом только к сетям MSK-IX, W-IX и DataIX. О технических деталях и преимуществах нового тарифа мы бы хотели рассказать в этой статье.

Кому интересны только факты, может почитать про преимущества, а потом решить для себя читать или нет остальную статью.
Читать дальше →

Hello world на ESB Toolkit

Reading time6 min
Views4.4K
Что такое ESB Toolkit и чем он интересен

ESB Toolkit — это набор инструментов для BizTalk сервера, который позволяет упростить разработку интеграционных приложений.
Несмотря на то, что это мощный инструмент, позволяющий создавать серьезные продукты, первое, чем он подкупает – низкий «порог вхождения» в тему разработки для BizTalk. Многие задачи, сложно решаемые оркестровками, легко решаются с помощью ESB Toolkit.
Майкрософт создала прекрасную документацию, где приведены примеры решения множества типичных задач. Но на своем примере я понял, что эта документация становится полезной, когда появилось общее представление о работе с этим инструментом. Видимо, срабатывает условный рефлекс ленивого программиста – не читать документацию, пока не получилось хоть что-то работающее, или не была потрачена впустую куча времени.
Собственно основная цель данного поста – создать простое приложение, чтобы можно было «пощупать» ESB Toolkit.
Читать дальше →

Сбор и анализ статистики во free-to-play играх

Reading time9 min
Views50K
Если вы разрабатываете free-to-play игры, то вам наверняка интересны вопросы, связанные со сбором и анализом статистики. Почему? Потому что статистика – это важная составляющая успеха free-to-play игр.
Цель моего цикла статей – структурировать разношерстную информацию по данному вопросу, пропустить ее через призму нашего опыта и выдать рекомендации по тому,

  • какие показатели стоит отслеживать в играх;
  • какие инструменты анализа могут помочь в работе со статистикой;
  • какие сервисы сбора и анализа статистики существуют с их достоинствами и недостатками.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity