• Как подключить java-сервер к внешнему сетевому интерфейсу в Linux?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Вместо:
    InetAddress.getLocalHost()
    использовать:
    InetAddress.getByName("10.10.23.45")
    Похоже, что getLocalHost() все еще неправильно разрешается (как уже обсуждалось в параллельном вопросе).
    P.S. Вот еще полезная инфа на тему.
    Ответ написан
  • Как создать Java приложение без GUI?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    public class Aaa {
    
        javax.swing.Timer dynTimer;
        public long startTime;
        public static boolean running = true;
    
        public static void main(String[] args) {
            Aaa p = new Aaa();
            p.init();
            p.start();
            
            while (running) {
                try {
                    Thread.sleep(100);
                    System.out.println("::: " + running);
                } catch (InterruptedException ie) {
                    System.out.println("Child thread interrupted! " + ie);
                }
            }
        }
    
        private void init() {
            System.out.println("> Инициализация");
            dynTimer = new javax.swing.Timer(100, (java.awt.event.ActionEvent e) -> {
                update(e.getWhen());
            });
        }
    
        private void start() {
            System.out.println("> Запуск");
            dynTimer.start();
            startTime = new java.util.Date().getTime();
        }
    
        private void update(long when) {
            System.out.println("Событие: " + (startTime + 1000) + " : " + when + " : " + running);
            if(startTime + 1000 < when) {
            	dynTimer.stop();
            	running = false;
            }
        }
    }
    Ответ написан
    3 комментария
  • Получить ответ от закрытой программы(C#/Java)?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Вам поможет только ProcessBuilder.

    Подробные примеры.
    Ответ написан
    3 комментария
  • Что такое код энтерпрайз уровня?

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

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Согласно вот этому, эта "большая контора" сильно похожа на большую мясорубку/соковыжималку :( Мое личное мнение: если условия в маленькой фирме устраивают, это будет во всех отношениях лучше. Тем более, что для будущей карьеры (после учебы) это никакой роли не играет, а за время учебы никакого "карьерного роста" все равно не будет - будет обыкновенный студенческий контракт.
    Главное, смотрите, чтоб была реальная возможность учиться, а не просто "занимать место".
    UPD: Если не устраивает качество маленькой фирмы (быдлокодерство), попробуйте поискать другую, побольше... студенческих позиций полно, в т.ч. и в приличных фирмах! Не нужно путать "имя" фирмы со своими будущими карьерными шансами... это конкретное имя повысит их, если Вы выживете там годик-два на позиции менеджера, а для позиции почти бесплатной низкоквалифицированной рабсилы (на которую Вы, собственно, туда собрались) все - с точностью до наоборот.
    Ответ написан
    1 комментарий
  • Как из Team Lead вырасти до CTO?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Прежде всего, нужно определиться с терминологией. СТО, это, собственно, не столько должность, сколько роль в организации, и ее интерпретация, к сожалению, бывает очень разной. Грубо говоря, от "это чувак, ответственный за снижение стоимости IT и прогулы программистов/админов", т.е. эдакий староста группы придурковатых гиков в свитерах и джинсах, и до "это чувак, от стратегических решений которого зависит наше будущее", т.е. ключевая фигура, на уровне СЕО или безопасника :) Соответственно, от кандидата могут ожидаться совершенно разные качества.

    Первое обычно имеет место быть в организациях, для которых IT/разработка - второстепенная составляющая бизнеса, от которой, по сути, мало что зависит. От "СТО" ожидаются в первую очередь такие скиллы, как умение находить дешевую рабсилу, умение закупать дешевую технику и умение вести отчетность, а понимание разницы между абстрактным классом и интерфейсом или, упаси господи, знание современных методик и технологий не только излишне, но даже прямо вредно для карьеры, т.к. это все дорого и никому не нужно :) Соответственно, определяющими факторами трудоустройства являются количество подчиненных на предыдущих должностях помноженное на количество уровней менеджмента в организации, помноженное на длину ног секретарши непосредственного начальника. Для таких должностей желательно избавиться от всяческих принципов, натренировать печень и раз и навсегда усвоить рекурсивность правила: успехи - заслуга начальника, провалы - следствие косяков подчиненных.

    Второе характерно для бизнеса, непосредственно зависящего от IT/разработки. Тут все и сложнее, и, одновременно, проще. Сложнее, т.к. нужен опыт, обширные знания как предмета, так и в области менеджмента, умение работать с людьми (не только с подчиненными), знание рынка, конкуренции и т.д. и т.п. А проще, т.к. в конечном счете, решающим является вопрос: "а покажи ка дружище, что ты уже сделал для других". Какие проблемы и как ты решил? Какие продукты были созданы под твоим руководством, и насколько они были успешны? Какие технологии ты внедрил, и что это принесло? Что ты изменил/улучшил в процессах? Короче, от кандидата ожидаются не какие-то конкретные скиллы или сертификаты, а банальное умение "делать так, чтоб все работало", убедительно проиллюстрированное соотв. портфолио. Нормальный СТО должен одинаково уметь и найти баг в коде, и утрясти с партнерами технические детали контракта, и подменить заболевшего скраммастера, и в воскресенье ночью накормить команду пицей/кофе, после чего в понедельник утром таки сдать заказчику законченный проект и повести всех на пиво. И все это - не для того, чтоб стать незаменимым, а чтоб создать коллектив единомышленников, который, если понадобится, точно так же вовремя сдаст горящий проект и без него.

    Нарисованная картинка, конечно, немножко черно-белая, и в живой природе встречаются самые причудливые комбинации понимания роли СТО в компании (я сам побывал в разных шкурах). Если попытаться вывести некую универсальную закономерность, то она в том, что чем реальность ближе к первому варианту, тем больше вероятность того, что контора окажется в заднице и все равно придется искать новую работу, а чем она ближе ко второму - тем больше у фирмы шансов на успех/развитие (а у ее СТО, соответственно - новых проблем, которые предстоит решать).

    Так что могу посоветовать начинать не с резюме, а с определения собственного представления о должности СТО, на которую лично Вы хотели бы попасть, а потом просто поискать работодателя с таким же пониманием. Тогда вопросы, что конкретно написать в резюме, сказать на собеседовании или какие скиллы подтянуть, прояснятся сами собой.
    Ответ написан
    Комментировать
  • Возможен ли PNG в CMYK?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Нет, не возможен. PNG предназначен для изображений в RGB или gray scale, т.е. использующих аддитивную цветовую модель, а также может содержать альфа канал. Это и не удивительно, если вспомнить, что PNG означает Portable Network Graphic, т.е. предназначен для отображения на мониторах. В то время, как CMYK - модель субстрактивная, предназначенная для печати.

    Для CMYK нужно использовать JPEG, TIFF или SVG.

    Сомневаюсь, что такая таблица может иметь смысл. Это все равно, что искать таблицу, из которой можно понять, что корабль предназначен для перемещения по воде, а самолет - по воздуху :)
    Ответ написан
  • Есть ли возможность восстановить доступ к точке wifi. Если ранее был доступ к нему?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Свою точку доступа, если забыл пароль, всегда можно сбросить на заводские настройки и выставить новый пароль. Это самое простое. Кроме того, в большинстве случаев, до ее админки можно добраться, подключившись к сети кабелем... и, опять же, сменить пароль.

    Чужую точку (к которой нет физического доступа), соответственно, можно взломать... но это достаточно сложно, незаконно, и тут никто "учить" этому точно не станет :)

    В любом случае, тот факт, что доступ был "раньше", сам по себе ничем не поможет.
    Ответ написан
    Комментировать
  • Как используется ассемблер в хакерстве?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Простейшие программы на ассемблере, используемые "в хакерстве", зачастую удивительно лаконичны и состоят из одной единственной инструкции NOP, проставленной в нужном месте взламываемого бинарника... искусство их написания заключается в нахождении этого самого места, для чего может понадобится даже предварительное написание других программ на других языках и еще много чего. Ну, а из прикладной бытовухи, на нем можно написать, например, прошивку для девайса, перехватывающего какой-нибудь RFID-радиообмен или перебирающего пароли. И то, и другое, вроде как, хакерство... только сроки дают разные :)
    Ответ написан
    Комментировать
  • Выпрямление напряжения. Что я делаю не так?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    А что конкретно смущает? Все правильно: чем больше емкость конденсатора, тем лучше он сглаживает пульсирующее напряжение, превращая его в "почти постоянное".
    В статье вх. сопротивление осцилографа достаточно велико, и емкости 300мкФ достаточно, чтоб этим "почти" можно было пренебречь. Было бы оно меньше, могла бы понадобится бОльшая емкость, чтоб получить ту же самую "прямую".

    UPD: https://www.youtube.com/watch?v=ARmNQrwgG0A
    Ответ написан
  • Какие есть современные альтернативы FoxPro?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Жесть какая... либо препод ограбил музей, либо это - курсовая по археологии!

    Современная альтернатива - это MS Access (Win) или Filemaker Pro (Mac).

    Но альтернативой это можно назвать весьма условно, т.к. реальная современная альтернатива - это не десктопные БД, а все же БД с архитектурой клиент-сервер + UI к ним на любой основе (от жирных клиентов, и вплоть до веб-приложений в облаке).
    Ответ написан
    2 комментария
  • Как на самом деле передаются биты по сетевому кабелю?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Наличие-отсутствие сигнала в проводе было во времена телеграфных аппаратов, т.е. примерно лет двести назад. С тех пор много чего изменилось. В современном сетевом кабеле (возьмем для примера только медь), по кабелю передаются импульсы с частотой 100, 250, 500 и более МГц, причем, не по одной, а по 2, 4 или даже 6 парам. (Вообще-то, там все несколько сложнее, но для понимания сути вполне достаточно считать пары параллельными линиями передачи.) Принято говорить о парах проводов, т.к. не бывает уровня (потенциала), самого по себе; уровень - он всегда относительно чего-то другого, например, в одном проводе относительно другого провода. Отсюда пары, а почему они называются витыми - гуглить самостоятельно. Передаваемый сигнал промодулирован т.н. Импульсно-Амплитудной модуляцией (PAM), т.е. передающая и принимающая стороны различают 3, 5 или даже 16 разных уровней сигнала, которыми, грубо говоря, и закодированы соотв. биты.

    66e6c58266524ec6bb132fb384638d75.jpg

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

    Теперь о скорости и расстоянии. Скорость распространения сигнала в проводнике на уровне школьной физики (если там, конечно, сейчас об этом вообще рассказывают) принято считать равной скорости света в вакууме, около 3m за 1 ns, но на практике она меньше, т.к. проводник не идеален и, как правило, находится не в вакууме, а в изоляции из диэлектрика. Привносимая диэлектриком паразитная емкость снижает скорость распространения сигнала в проводнике (не путать со скоростью распространения поля!) Но те, кто не прогуливал физику с математикой, вполне могут прикинуть порядок цифр для проводника длиной 1000км, как для поезда, идущего из А в Б или даже "расстояние" между двумя соседними битами, передаваемыми по одной паре :)

    Правда, полученые таким нехитрым рассчетом результаты (пусть даже с учетом волновых характеристик кабеля) все еще далеки от реальности для расстояний в тысячи км, т.к. даже в самом лучшем кабеле такой длины вся энергия сигнала передающей стороны превратилась бы в тепло и излучение, и принимающей стороне осталась бы только дырка от бублика. Длина реального сетевого кабеля между двумя устройствами (витая пара!), грубо говоря, не может превышать 100м. Дальше сигнал попадает в другое устройство, которое вносит свои задержки, и т.д. и т.п. от Таганрога, и до самого Ютюба. Конечно, не все эти устройства соединены медью, но мы не станем вдаваться в тонкости распространения света в разных оптических средах, и радиоволн в ионосфере, чтоб у среднестатистической аудитории Тостера ненароком не снесло крышу. Тут важно только то, что на практике мы имеем уже не ns, а десятки, сотни и более ms задержки.

    Это было даже не введение, а популярно-упрощенная шпаргалка на тему того, "как биты идут по проводам", или, выражаясь проще, что происходит в сети на уровне 1 семиуровневой модели ISO/OSI. Пакеты, а также фреймы, датаграммы и пр. абстрактные договоренности о том, как именно считать биты - это уже из другой оперы, точнее, на других уровнях, причем, на каждом свои, и одни в других. Учитывая то, что внутри процессора и памяти (где мы имеем дело с данными из этих пакетов) происходит все то же самое, что и в кабеле, на любом уровне модели вполне корректно считать, что пакет этого уровня доставляется "единомоментно".
    Ответ написан
    6 комментариев
  • Каковы основные механизмы развития личности программиста?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    С т.з. психологии, развитие личности программиста ничем не отличается от развития личности кондитера, мента или стоматолога. Начинается все в младенчестве с осознания собственного Я, далее идет социализация (т.е. проецирование своего Я на других особей вида). Эксцессы на этой стадии делают личность либо социопатом, либо матерью Терезой. Далее следует, как правило, образование, приводящее к формированию системы ценностей и убеждений, формирующих, собственно, личность. Если в процессе образования личности прививаются навыки критического восприятия и аналитического мышления, у личности есть шанс выработать "собственную" сложную и непротиворечивую систему ценностей и убеждений (в кавычках, т.к. за основу все равно будет взята та или иная модель из окружающей действительности; говоря проще, трудно стать буддистом, учась в православной семинарии, или гуманистом - в военной академии). Если образования нет, ее может заменить религия или др. аналогичная система мотиваторов иррационального характера (например, корпоративная этика тех или иных социальных групп), задействованная на уровне "инструкции пользования жизнью". Короче, программисты тут ничем не отличаются от всех остальных прямоходящих обезьянок.

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

    Впрочем, если судить по вопросам на Тостере и уровню подготовки основной массы современных "программистов", в последнее время заморачиваться на эту тему вышло из моды :)
    Ответ написан
    3 комментария
  • Как в Java удалить крайний символ или строку, напечатанную на экране терминала?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Возможность есть, но она никак не связана с Java. Это можно сделать с помощью т.н. Escape-последовательностей, если они поддерживаются терминалом (если терминал работает в режиме эмуляции, например, VT-52 или VT-100). В таком режиме работает большинство терминалов в Linux.

    Удалить последнюю строку, выведенную с символом перевода каретки (когда после вывода строки курсор находится в позиции 1 следующей строки) можно, например, так:
    System.out.println("Hello world"); //Print the line
    
    System.out.print(String.format("\033[%dA",1)); // Move cursor up by 1 line
    System.out.print("\033[2K"); // Erase the line


    Полный список кодов можно найти, например, вот тут.
    upd:
    С помощью Escape-последовательностей можно делать намного больше: переключать цвета, позиционировать курсор, "стирать" части строки или весь экран, и т.д. и т.п. Для интенсивного использования ANSII, особенно под Виндой, може оказаться полезной Jansi.
    Ответ написан
    Комментировать
  • Перехват ввода сканера штрих-кода(в режиме эмуляции клавиатуры) или как забрать ввод с конкретного устройства?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Повторю кэповский вопрос: почему бы просто не переключить сканер в режим RS232 и не забирать данные из СОМ-порта (и через него же, кстати, и программировать сканер, если нужно) ?
    Для этого в Линуксе вообще не нужны никакие спецдрайвера. Если в компе вдруг физически нет RS232, купить копеечный USB адаптер на FTDI чипе - и всех делов :)

    upd:
    cc9bed97ac2b4fa4b03dae0f56313b64.jpg

    1 - Нажимаем
    2 - Заменяем на нужный вариант
    3 - profit :)
    Ответ написан
  • Поможет ли знание чистого си и ассемблера java-программисту?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Еще как поможет!
    Даже не говоря о том, что Вы будете банально понимать, что происходит "под капотом" и почему нельзя фривольно обращаться с int - long - float - double, Вы вполне можете натолкнуться на такие вещи, как JIT или кеш процессора, понять которые без понимания асм-а довольно затруднительно.
    Без понимания основ (коими являются асм и С) можно только как мартышка заучивать "как можно, а как нельзя" и надеяться, что в нужный момент вспомнится правильная молитва :)
    Ответ написан
    Комментировать
  • Можно ли сделать сайт про чужую фирму без спроса?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Типа, догнать и осчастливить?..
    В лучшем случае пожмут плечами, в худшем - засудят за использование логотипа и заберут все бесплатно или заставят закрыть плюс взыщут компенсацию за нанесенный моральный ущерб.
    Ответ написан
    Комментировать
  • Что нужно для создания bluetooth браслета?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Посмотрел автомобиль Мерседес, но смутила цена. Возможно создать автомобиль, затратив 300-500 долларов?


    Как Вы думаете, если бы существовала такая возможность, что бы помешало воспользоваться ей производителям смутивших Вас браслетов?
    Ответ написан
    7 комментариев
  • Существует ли правило, объясняющее в каких случаях нужно начинать абзац, а в каких допустим перенос строки?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Существует, и даже много... Только, боюсь, пользователям они не понравятся, т.к. причина неряшливого обращения с текстом кроется в неряшливости мышления, которую, увы, никакими правилами не искоренить :)
    Ответ написан
    2 комментария
  • Возможно использовать при программировании данные о USB разъеме?

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