• Может ли человек уметь профессионально работать с более чем одним языком?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Все еще хуже... тот, кто не знает хотя бы два-три языка - вообще не может считаться профессионалом :)
    Ответ написан
    Комментировать
  • Как скомпилировать Jar файл с аргументом?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Сообщения об ошибках не читай - вопросы задавай :) А между тем, там конкретно написано, в чем именно проблема: Failed to load the native library.
    В src/native/windows/x64 лежат, вероятно, какие-то DLL-ки. Когда программа запускалась из папки проекта, все было хорошо. Теперь JAR переложили в др. место, а DLL-ки не прихватили... и они больше не находятса, т.к. путь к ним указан относительный.
    Решения проблемы два: либо указать абсолютный путь к DLL, либо прихватить их вместе с JAR в др. папку.
    Ответ написан
    1 комментарий
  • Как узнать какой порт занимает MongoDB в Ubuntu 14.10?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    sudo netstat -tulpn
    Если процесс запущен, найдете порт в списке.
    Ответ написан
    2 комментария
  • Есть процессорные мощности (xeon). В какое выгодное русло их можно пустить?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Недавно сталкивался с одним интересным проектом как раз на эту тему... Насколько я понял, любой желающий может выставить имеющиеся облачные/процессорные мощности для сдачи в аренду, в т.ч. краткосрочную... короче, типа биржи, "торгующей" IaaS ресурсами. Называется CloudExchange, разрабатывается Deutsche Börse Group и, кажется, они сейчас все еще в стадии бета-тестирования. Hе знаю, подойдет ли... если нет, попробуйте поискать аналогичные проекты.
    Ответ написан
    Комментировать
  • Есть ли язык для создания изображений?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Однозначно Graphviz!
    В AsciiDoc, например, есть плагин. Тогда прямо в тексте достаточно написать:
    digraph {
        graph [rankdir=TD,ranksep=0.5,fontname=Arial]
        node [shape=box,fontname=Arial,fontsize=12,style="rounded"]
        edge [fontsize=8, fontname=Arial]
    
        user [shape=diamond, label="User", fillcolor=yellow, style="rounded,filled"]
        nginx [label="Nginx Web Server \n (http://ctxm.ornet.org)", style="bold,rounded"]
        jenkins [label="Jenkins"]
        nexus [label="Nexus"]
        sonar [label="Sonar"]
        postgres [label="PostgreSQL"]
        openldap [label="OpenLDAP"]
        volumes [label="volumes\n (data persisted here!)", constraint=false,color=gray, fillcolor=gray, style="rounded,filled"]
    
        user -> nginx[label="access", style=tapered, penwidth=3 ]
    
        nginx -> nexus[label="\/nexus"]
        nginx -> sonar[label="\/sonar"]
        nginx -> jenkins[label="\/jenkins"]
        nginx -> volumes [label="volumes-from",color=gray]
        openldap -> volumes [label="volumes-from",color=gray]
        postgres -> volumes [label="volumes-from",color=gray]
        jenkins -> openldap
        jenkins -> nexus
        jenkins -> volumes [label="volumes-from",color=gray]
        nexus -> openldap
        nexus -> volumes [label="volumes-from",color=gray]
        sonar -> postgres
        sonar -> openldap
        sonar -> volumes [label="volumes-from",color=gray]
    }

    А на выходе это даст картинку:
    ba7f453819c64a89a79d97fafcfd886c.png
    Ответ написан
    Комментировать
  • Можно по подробнее о команде GO?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Можно: GO - это вообще не SQL, это - специфика MS SQL. Ну, а USE существует практически в любом распространенном диалекте и предназначена для "выбора" БД, для использования в последующих запросах.

    Вызывать GO в конце этого запроса - вряд ли... хотя, смысл может появиться, если до и/или после него делается что-то еще, чего мы не видим :)
    Ответ написан
    Комментировать
  • Где найти микроконтроллер с аккумулятором и bluetooth модулем?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Берите готовый эвал кит от TI. Весьма достойная железяка и корпус готовый... специально для таких нужд разрабатывалась.
    www.ti.com/tool/cc2541dk-mini

    CC2540DK-MINI.jpg
    Ответ написан
  • Успешная методологии разработки ПО для Оутсорс конторы?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Боюсь, что в описанной ситуации нужно не увеличивать количество прочитанных книг по Скраму, а банально искать другую работу... Или перестраивать процессы в существующей богодельне. Ибо в нормальной скрам-команде такие ПО/ПМ вылетели бы, как пробка из бутылки, после двух-трех спринтов. Но если существующее положение вещей всех остальных устраивает, то вводить там Скрам - все раво, что плевать против ветра.
    Ответ написан
    1 комментарий
  • Пайка с подачей припоя - как закрепить выводные детали?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Для двуногих навесных деталей (например, резисторов) есть три способа монтажа.

    1. Ноги обгибаются под 90° по расстоянию между отверстиями, и резистор лежит на плате. Для этого способа достаточно просто перевернуть плату, прижав ей резистор к рабочей поверхности, и спокойно паять сверху. Но можно это сделать даже "на весу" - только на палец, которым будет прижиматься корпус резистора, нужно прицепить что-нибудь термостойкое, чтоб не обжечься.

    22c19f9262d34c8ba91470aa176a4c1d.png

    2. Резистор монтируется вертикально (паяется одна нога у основания, а вторая загибается на 180°). Техника пайки аналогична первому способу. Прижимать таким способом легче даже на частично распаяной большими деталями плате, но такой вариант монтажа мало пригоден в случае компактной плоской компоновки и требует соотв. разводки платы. Сейчас этот вариант применяется крайне редко.

    d24a1f02974640c4be4abe91f59ce52c.jpeg

    3. (Кошерный) Ноги выгибаются аналогично дужкам прописной буквы Х так, чтоб расстояние в самом узком месте соответствовало расстоянию между отверстиями. Тогда его можно защелкнуть в плату (примерно как показано на картинке, только если его до пайки сильнее вдавить), и корпус будет висеть над поверхностью. Таким способом можно паять вообще в любом положении платы.

    c1ba3e5ed83b4aceb783112c36c93430.gif

    Еще нужно помнить, что, не важно, какой способ выбран - ручной монтаж платы производится "слоями": первыми самые плоские детали, последними самые высокие. Тогда прижимать все детали одним слоем - не проблема. Исключения из этого правила делаются только для деталей, особенно чувствительных к температурному режиму пайки.

    Теперь про оснастку.

    Для обжимки ног под стандартные типоразмеры есть специальные бруски.
    b7fb5dfa715447879ac7d07680bec9d7.jpg

    Для прижима деталей для пайки в мелкосерийном ручном производстве, кроме уже упомянутой "третьей руки", есть специальные рамки.
    3977acfd11024249bcbc5dedf5d9edd8.png
    или даже

    ff14faec49a4472492fbf653c6f9171d.jpg

    P.S. А вообще, баловство это все... в принципе, достаточно иметь две (не левых) руки, нормальный флюс/припой/паяльник, да и вообще давно пора переходить на SMD и пайку феном или в печке по профилю.
    Ответ написан
    1 комментарий
  • Правила объявления интерфейсов. "I" или "!I"?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Никакой "официальной" жесткой конвенции на этот счет нет. Как уже указал RGV, какую конвенцию использовать - личное дело команды / фирмы / техдира.
    Я сам в свое время пришел к Java из Pascal и .NET, и тоже придерживаюсь нотации с I, т.к. это позволяет в коде визуально отличить интерфейс от класса. Просто для примера:
    ...
      IProducer simpleProducer = new Producer();
      IProducer sofisticatedProducer = new SpecialProducer();
    ...
      public void produceSomething(IProducer producer);

    При взгляде на такой код сразу понятно, кто из ху, без всяких дополнительных кликов, наведения курсора и прочих пританцовываний с IDE.
    И хотя это никак явно не помешает креативному балбесу влепить класс там, где нужно использовать интерфейс, это поможет проводящему ревью заметить грабли невооруженным глазом :) С моей точки зрения цена такого удобства в 1 (один !) доп. символ в имени вполне оправдана.
    Ответ написан
    Комментировать
  • Что из себя представляет CoreOS?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    А почему бы просто не почитать об этом на официальном сайте?

    На случай, если напряг с английским: CoreOS - облегченный дистрибутив, заточенный под деплоймент в кластере, в т.ч. через загрузку по PXE/iPXE. На борту основные два механизма, необходимые для этого: Docker (легкие контейнеры для запуска процессов) и etcd (распределенное key-value хранилище для репликации конфигурационных параметров). А больше там ничего и не надо, т.к. полезные процессы запускаются к контейнерах.

    Для "поиграться", особенно в качестве десктопа, не подходит совершенно... разве что, "играться" будете с кластеризацией. Тогда это действительно возможно, в т.ч. и на одной машине, если на ней поднять виртуализатор (например VirtualBox), но смысла в этом, кроме общего ознакомления, особенно нет. Короче говоря, если цель игр не в построении своего облака, то смело проходите мимо.
    Ответ написан
    1 комментарий
  • Как в Linux мониторить непрерывность предоставления CPU виртуализатором изнутри VM?

    pi314
    @pi314 Автор вопроса
    Президент Солнечной системы и окрестностей
    Проблема решена, гипотеза подтвердилась. Непосредственно по вопросу: мониторить проще всего с помощью:
    iostat -c | awk 'NR==4 {print $5}'
    Это же значение выдает и top (самое правое в строке %CPU, "0,0 st", что означает steal time), но оттуда его муторнее выдерать.

    Большое спасибо всем за советы и высказанные предположения!
    Ответ написан
    Комментировать
  • В чем лучше иконки рисовать?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Ответ написан
    Комментировать
  • Как комплексно совершенствовать мышление?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Лучше всего ум, как инструмент познания, развивает философия. Вот ей и займитесь... разумеется, не пренебрегая и другими науками (инструментами познания), и тем же самым презренным контентом - сырьем, которое натренированный ум будет критически перерабатывать, превращая в незамутненное знание :)
    Ответ написан
    5 комментариев
  • С чего начать изучение программирования микропроцессоров?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    были занятия по азам программирование микропроцессоров, но толком не объясняли ничего.


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

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

    Если выберете второй вариант, начните с физики, схемотехники логических элементов и архитектуры / устройства микропроцессоров. Потом переходите к информатике, учите ассемблер, C и, возможно, VHDL. как можно быстрее купите себе плату (да хоть ту же Ардуину) и учитесь писать программы. Других путей к выздоровлению не существует.
    Ответ написан
    Комментировать
  • Объясните код, если можно то с комментариями?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Код - как код... умеренной кривизны. Тянет из какой-то БД параметры (таймаут и количество попыток), откладывает в Мэп некие статусы по ключу IP+Пользователь, и позволяет опрашивать их состояние (не вышел ли таймаут и не исчерпано ли заданное количество попыток) / удалять / сбрасывать... короче, очень похоже на кусок какой-то хрени для рассылки спама.

    Что конкретно непонятно в этом коде?
    Спрашивайте!.. не думаю, что кто-нибудь станет просто так комментировать каждую строчку этой простыни без конкретной постановки вопроса :)

    Update:
    @gurinderu
    Прикольно, а откуда инфа про базу данных? )))))))

    @Losted
    По DataBaseException, полагаю


    Именно... эта exception может прилететь только из getOption(). А в остальном все просто, как угол дома. Некая сущность создает экземпляр этого класса, передавая в конструктор контроллер, из которого при инициализации потянутся начальные "настройки". Т.к. метод synchronize() публичный, очевидно, данные в "базе" могут поменяться на лету, и его можно дернуть еще раз, чтоб перезачитать актуальные настройки. (Действительно ли за этим скрывается БД или что-то другое, сказать невозможно - детали абстрагированы фасадом SysOptionController.)

    Т.к. этот и др. публичные методы synchronized, очевидно, они могут дергаться разными потоками. (Кстати, синхронизация сделана довольно таки криво и может обернуться проблемами производительности... но это уже другая тема).

    Отсюда более-менее понятно, что делает эта некая сущность. Скорее всего, она предназначена для выполнения какого-то действия с "пользователями" (например, отправки им спама), которое может сработать с первого раза, а может и не сработать. На обработку одного пользователя отводится лимит времени и попыток. Пользователь идентифицируется по IP и имени. Скорее всего, там есть некий ЕхecutionService с пулом потоков. Поток получает экземпляр BFController и, в зависимости от того, что он делает, может воспользоваться соотв. методами:
    addTry() - когда начинается очередная "попытка"
    needWait() - чтоб проверить, продолжать ли попытки или лимит для пользователя исчерпан
    resetTries() - чтоб сбросить счетчик попыток.

    Помимо кривой синхронизации, семантика публичного интерфейса мутная, базируется на неких неочевидных предположениях об использовании класса и, вдобавок, реализация никак не очищает память. Короче, с т.з. объектного дизайна - уверенная троечка с плюсом :)
    Ответ написан
  • На чем лучше писать музыку?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Ответ написан
    Комментировать
  • Каким образом на системном уровне заблокирована система android?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Комментировать
  • C# to Java или Чего стоит выучить новый язык, зная прежний?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Требование совершенно справедливое, т.к. зная один единственный язык стать хорошим (тем более, пригодным для должности ведущего) программистом просто невозможно. Как абсолютный минимум нужно знать:
    - ассемблер и устройство процессоров,
    - минимум один "взрослый" язык (C/C++/Pascal)
    - минимум один VM-ориентированный язык (C#/Java)

    Зная C#, выучить синтаксис Java - вопрос одного-двух дней, но научиться правильно писать на нем программы - это как минимум один-два серьезных проекта, т.е. годик-другой. Однако, не расстраивайтесь - после третьего языка "изучение" последующих уже практически не напрягает. А потом наступает состояние, когда "новых" языков не остается - есть лишь языки, которые еще не использовал... но если нужно - просто берешь и используешь, "изучая" их, практически, по ходу дела. Вот именно оно и есть признак пригодности для должности ведущего программиста.
    Ответ написан
    1 комментарий
  • Пытаюсь сделать превью для изображения. Можете помочь?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Левой пяткой через правое ухо, я бы сделал как-то так (для наглядности результат сохраняется в файл):
    $src = './orig.jpg';
    $trg = './thumb.jpg';
    
    cropAndResize2Square($src, 128, $trg);
    
    function cropAndResize2Square($originalPath, $targetSquareSide, $targetPath){
    
    	//get original's dimension
    	list($origW, $origH) = getimagesize($originalPath);
    
    	//create images
    	$srcImg = imagecreatefromjpeg($originalPath);
    	$trgImg = imagecreatetruecolor($targetSquareSide, $targetSquareSide);
    	
    	//calculate source square position and side
    	if($origW >= $origH){
    		$srcSquareSide = $origH;
    		$srcSquareX    = ($origW - $targetSquareSide) / 2;
    		$srcSquareY    = 0;
    	} else {
    		$srcSquareSide = $origW;
    		$srcSquareX    = 0;
    		$srcSquareY    = ($origH - $targetSquareSide) / 2;
    	}
    	
    	imagecopyresampled($trgImg, $srcImg, 
    			0, 0, $srcSquareX, $srcSquareY, 
    			$targetSquareSide, $targetSquareSide, $srcSquareSide, $srcSquareSide);
    
    	//encode and save result (default quality 75%)
    	imagejpeg($trgImg, $targetPath);
    	
    	//clean up
    	imagedestroy($srcImg);
    	imagedestroy($trgImg);
    }

    P.S. Если понадобится фильтр (например, Ланчос), лучше юзать ImageMagic. Хотя, если бешенной собаке семь верст - не крюк, можно написать и ручками. Но на PHP это будет убийственно медленно :)
    Ответ написан
    1 комментарий