Программирование, Путешествия, Покер

Последний пост:17 марта
803
Статистика
Всего постов
3223
839,495 просмотров
Новых постов
+0
1 в день
Лучшие посты автора
27.09.2022 +233
21.12.2019 +196
22.02.2023 +169
04.01.2023 +166
13.07.2019 +154
Лучшие посты читателей
inpace +111
justpus7 +98
vsobakekot +88
Gtrdy +85
s4ekotilla +78
Самые активные читатели
1 6 7 8 9 28 162
  • Сходили в кино на российский фильм "Дуэлянт". Годное кино, а по меркам российского кинематографа просто шедевр.

    Из забавного - во время поездки узнали, что на итальянском слово "хурма" звучит как "каки" (пруф)
    Ну и недавно опубликовали жуткую статью про то, как написать любую программу на JavaScript, используя всего лишь 6 символов. Используется тот факт, что сам движок JS пытается интерпретировать данные по-разному (к примеру, число как булевую переменную true или false, или булевую переменную как строку)

    Кстати говоря, для Java возможность уменьшить количество символов тоже существует, хотя она и не такая конская. Правда, минимальное количество символов все равно будет в 3 раза больше. В Java есть возможность писать код, используя вместо привычных букв и символов так называемые escape-конструкции, другими словами, записывая номер символа в формате юникода.
    Для этого нужно лишь вставить обозначение замены на номер символа из юникода - "\u", а затем и сам номер в 16тиричной системе счисления.
    Таким образом, слово void можно записать как \u0076\u006F\u0069\u0064, а пробел как \u0020.
    В итоге код будет выглядеть не очень читабельно, но машине все равно и она его примет.
    dzFJKsz.png


    Таким образом, для Java минимальное количество символов - это 10 цифр + 7 букв (a,b,c,d,e,f + u), а также слэш. Итого 18.

    Вот такие дела. На деле такая штука редко применима (я сам использовал 1 раз, а многие скорее всего о таком вообще не слышали), однако о ней стоит помнить, иногда может помочь.
    64/1047
    Ответить Цитировать
    4
  • Цитата (strkk @ 15.10.2016)
    ...
    Тонкости самого процесса производства расписывать подробно не буду, вряд ли это кому-то интересно. Кратко - берется круглая пластина с множеством кристаллов кремния и монтируется на подложку. Они соединяются золотыми (на 99,9%) проводами, под давлением и температурой заливаются черным пластиком. Затем приделывают внешние контакты, наносят маркировку лазером (выжигая буквы на пластиковом покрытии).
    Затем распиливают заготовку на отдельные чипы, тестируют и запаковывают.


    Забавно, до покера я в качестве конструктора как раз занимался разработкой и модернизацией установок для производства этих круглых пластин с кристаллами кремния. Правда, не очень продолжительное время)
    1/1
    Ответить Цитировать
    0
  • Цитата (strkk @ 30.9.2016)
    Не поставил в итоге линукс, времени вообще не хватает ни на что. Будет в todo-листе после отпуска.

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

    Печалька.

    Мораль проста - я баран, не будьте как я.
    65/1047
    Ответить Цитировать
    4
  • Зато потом разберешься как все починить и будешь гуру линукса
    4/20
    Ответить Цитировать
    0
  • Не так давно я с ужасом наблюдал, как двое моих коллег-программистов сидели и вручную правили импорты в джава-классе - удаляли ненужные, расставляли пробелы между группами. Чтобы вы могли оценить полнейший идиотизм данного действия, приведу бытовую аналогию. Перед вами на полу разбросаны конфеты M&M's и вам нужно убрать их. В одной руке вы держите полностью рабочий пылесос. Его можно включить и одним движением убрать все конфеты, однако вместо этого вы нагибаетесь, начинаете подбирать конфеты одну за другой и класть в мусорное ведро. Причем не просто так, а чтобы буква m была наверху.
    Ну и моя реакция выглядела примерно так.
    oe9dg.jpg


    Все это смотрится очень дико со стороны человека, который познал светлую сторону любой софтины - хоткеи.
    И я захотел поделиться довольно простой мыслью. Профессионал своего дела должен знать, и, что не менее важно, уметь обращаться со своими инструментами.
    Знание + умение приводит к оптимизации работы, что, в свою очередь, экономит заметное количество времени. А сэкономленное время приводит к увеличению количества сыгранных раздач / собранных изделий / выполненных задач и, в конце концов, увеличению дохода.
    Для людей, чья работа связана с компьютером, инструментами являются различные установленные там программы.
    Например, для покеристов это ПТ4/ХМ2, покерный клиент, всякие пиосолверы и прочее ГТО-непотребство.
    Для профессиональных геймеров это различные программы для стримов, игры и кнопка доната.
    Самый широкий спектр программ, на мой взгляд, у программистов. Помимо основного инструмента, а именно IDE, есть еще браузер, программа для работы с БД, инструменты для работы с удаленными серверами, таск-менеджеры, корпоративный чат и еще куча всего.

    Знание инструмента позволяет экономить время сразу большими кусками. Например, в посте про некоторые возможности IDE я рассказал про штуки, которые могут помочь решить задачу более простым путем. Мне они очень помогли бы в самом начале изучения... :)

    А вот умение пользоваться экономит время маленькими кусочками и заключается в оптимизации уже знакомых операций. Один из самых важных навыков для этого - использование хоткеев. Это дорога в один конец - как только вы выполняете операцию нажатием двух кнопок вместо 5 кликов выши, отвыкнуть от такого почти невозможно.

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

    Про покерных мультитейблеров и говорить нечего. Здесь вопрос оптимизации различных шаблонных операций стОит особенно дорого.

    У программистов тоже огромная куча хоткеев в одной только IDE, не говоря уже о других программах и о том, что на многие операции можно вешать хоткеи самому. Короче говоря,
    66710079.jpg


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

    Эти привычки помогают экономить время. А время - это деньги.
    Попробуйте сами, переходите на светлую сторону из темного леса :)
    66/1047
    Ответить Цитировать
    15
  • Мне, как новичку, в эклипсе очень помогают следующие хоткеи:

    sysout + ctrl + пробел --> получаем System.out.println();
    ctrl + F11 --> скомпилировать и запустить программу
    ctrl + shift + o --> добавить недостающие импорты
    ctrl + d --> удалить строку целиком

    Накидайте еще чего-нибудь полезного и часто используемого
    И кто-нибудь знает хоткей для quick fix-а к пакету, чтобы прописать мой путь вместо того, с каким был скопирован файл ?
    5/20
    Ответить Цитировать
    2
  • FlySoHigh, это хоткеи в Эклипсе? Потому что в IDEA для вывода достаточно написать "sout", ctrl+d дублирует строку, а ctrl+y удаляет и тд.
    2/4
    Ответить Цитировать
    1
  • zlobb, да, это для Эклипса, в IDEA еще не пробовал работать.
    6/20
    Ответить Цитировать
    0
  • Касательно хоткеев в IDE, дам небольшой совет.
    Не стоит учить хоткеи какой-то конкретной IDE. Список хоткеев и шаблонов кода можно менять, ну и функционал основной одинаков, поэтому куда лучше настраивать все под себя. В таком случае процесс смены IDE упростится, т.к. вы потратите куда меньше времени на перенастройку IDE под себя, чем на заучивание новых сочетаний. Да и путаницы в таком случае будет куда меньше.

    Про свои хоткеи и конкретные рекомендации тоже напишу (правда, у меня почти все отличаются от дефолтных). Если честно, не думал что это может кого-то заинтересовать.
    67/1047
    Ответить Цитировать
    5
  • Итак, список моих хоткеев. Конкретное сочетание клавиш вряд ли кому-то поможет (значительная часть отличается от дефолта), но надеюсь что будет полезно.

    Идут они не по частоте использования, а слева направо по клавиатуре. Писал по памяти, что-то мог подзабыть. Общеизвестные системные хоткеи (типа Ctrl+C Ctrl+V) включать в список не стал

    F2 - переименовать файл
    F4 - открыть список реализаций/наследников интерфейса/класса
    F6 - запустить тест
    F7 - перезапустить тест еще раз
    F8 - запустить сборку приложения

    Ctrl+1 - Quick fix - окошко вариантов исправления
    Ctrl+3 - Quick assist - переводит фокус на меню поиска различных комманд, удобная штука
    Ctrl + Q - Уменьшить выделение текста
    Ctrl + W - Расширить выделение текста

    Ctrl+E - Удалить строку целиком
    Ctrl+R - Закрыть вкладку
    Ctrl+T - Показать реализации/переопределения метода
    Ctrl+Y - Сделать снова (Redo, противоположность Ctrl + Z)
    Ctrl+- (дефис) - закомментить строку
    Ctrl+S - Сохранить. Настроено так, что перед сохранением выполняется автоматически организация импортов (о чем я упоминал ранее) и автоматическое форматирование кода.
    Ctrl+D - Поиск класса по имени
    Ctrl+H - Общий поиск по всем файлам
    Ctrl+L - Переход к строке (вводишь номер и перекидывает туда)
    Ctrl+,(.) - Переход к предыдущей (следующей) ошибке в коде.
    Ctrl+/ - автоматическое дополнение имени переменной или метода.
    Ctrl+↓ (↑) - Скопировать текущую строку(-и) вниз (вверх)
    Ctrl+(Пробел) - Content assist, предложения по автодополнению.
    Ctrl + различные цифры на нумпаде - различные генерации кода/класса/пакета/теста и т.д.

    Alt+←(→) - Прыжок к прошлой (следующей) точке кода. Блин, сложно объяснить что это, но штука очень удобная.
    Alt+↓ (↑) - Переместить строку(-и) вниз(вверх)
    Alt+Shift+R - переименовать что-то в коде (переменную, метод и т.п.)
    Alt+Shift+i - заинлайнить переменную. Трудно объяснить простыми словами, что это такое :)
    Alt+Shift+L - выделить что-то в отдельную переменную
    Alt+Shift+M - выделить блок кода в отдельный метод

    Ctrl+Shift+↓ (↑) - перевести весь выделенный текст в нижний (верхний) регистр.

    Ну и бонусом - в винде переставил смену языка на ту кнопку, которая находится сразу под Esc. В русской раскладке она отвечает за букву ё, то есть не нужна :)
    68/1047
    Ответить Цитировать
    6
  • А чтобы сделать свои хоткеи нужен какой-то плагин или в эклипсе это дефолтными операциями можно сделать?
    7/20
    Ответить Цитировать
    0
  • FlySoHigh, дефолтных средств достаточно. Заходим в Window -> Preferences -> General -> Keys.
    Там находим поиском нужное нам действие и задаем ему комбинацию клавиш + область, где это будет действовать (к примеру, какой-то хоткей при редактировании Java класса будет делать одно, а при редактировании JavaScript - другое)

    Выглядит вот так.
    MCQiRNP.png
    69/1047
    Ответить Цитировать
    3
  • Цитата (strkk @ 20.10.2016)
    вручную правили импорты в джава-классе


    Что за люди у тебя там работают??
    6/10
    Ответить Цитировать
    0
  • kazkachi, Очень трудолюбивые :) А вообще конечно это диковато)

    ------

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

    Надо преобразовать римское число в десятеричное. Ну и обратно (это проще).
    70/1047
    Ответить Цитировать
    0
  • strkk, А ограничения по числам есть? Вроде бы уже в районе 5000 начинается дичь с верхним подчеркиванием?
    8/20
    Ответить Цитировать
    0
  • Немного про собеседования.

    Все ниженаписанное - исключительно мое мнение/впечатление/наблюдение, которое может отличаться от чьего-то другого.
    Также, про собеседования в том числе в ИТ если огромная куча постов в интернете. Я постараюсь написать про вещи, которых я там не встретил.

    0. Стоит указывать реальную зарплату, которую вы хотите получать в начале работы. Политика "я пока ничего не умею, поэтому напишу 25к рублей" только отпугнет потенциальных работодателей (проверено на собственном опыте). Причин, на мой взгляд, несколько.
    - Во-первых, у компаний есть такая штука, как штатное расписание, где прописана зарплата для конкретной должности. Т.е. если они ищут младшего программиста, то и платить готовы сразу условные 50к, которые прописаны в документе.
    - Во-вторых, лучше изначально искать компании получше и вместо поиска любой работы потратить время на подтягивание знаний.
    - В-третьих, со стороны это выглядит как "я ничего не знаю, возьмите меня, буду работать за еду". А всем нужны знающие люди :)

    1. Не только компания выбирает себе работника, но и работник вправе выбирать. Далеко не всегда стоит идти в первое попавшееся место по принципу "взяли и слава богу".

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

    3. Стоит почитать про компанию, изучить сайт и посмотреть чем они занимаются.
    Ну и обратить внимание на офис. Все-таки вам там работать.

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

    5. Стоит помнить, что собеседование стоит рассматривать как форму обучения. Ваши знания проверяют и помогают научиться чему-либо.
    Ну и можно задать какие-то вопросы более опытному человеку.

    6. Перед собеседованием в основную контору, в которую вы хотите попасть, можно потренироваться попроходить собеседования в других. Меньше нервов и удивления вопросами будет в таком случе.
    71/1047
    Ответить Цитировать
    25
  • Цитата (FlySoHigh @ 24.10.2016)
    А ограничения по числам есть? Вроде бы уже в районе 5000 начинается дичь с верхним подчеркиванием?


    Ну проще принять записи без вертикальных черт. Во-первых, это вроде как не общепринято. Во-вторых, зачем лишний гемор :)
    72/1047
    Ответить Цитировать
    0
  • Цитата (strkk @ 24.10.2016)
    Надо преобразовать римское число в десятеричное. Ну и обратно (это проще).


    В первую очередь, как опытному программисту, я думал начать искать решение в гугле:)

    но так не интересно, поэтому вот решение в лоб:


    public static String fromDecimalNumberToRome(int a){

    StringBuilder sb = new StringBuilder();

    while(a != 0){
    if (a >= 1000){
    sb.append("M");
    a -= 1000;
    continue;
    }
    if (a >= 500){
    sb.append("D");
    a -= 500;
    continue;
    }
    if (a >= 100){
    sb.append("C");
    a -= 100;
    continue;
    }
    if (a >= 50){
    sb.append("L");
    a -= 50;
    continue;
    }
    if (a >= 10){
    sb.append("X");
    a -= 10;
    continue;
    }
    if (a >= 5){
    sb.append("V");
    a -= 5;
    continue;
    }
    if (a >= 1){
    sb.append("I");
    a -= 1;
    continue;
    }
    }
    return new String(sb);
    }

    public static int fromRomeNumberToDecimal(String str) throws IllegalArgumentException{

    Pattern p = Pattern.compile("[I|V|X|L|C|D|M]*");
    Matcher m = p.matcher(str);
    if (!m.matches()){
    throw new IllegalArgumentException();
    }

    char[] strArr = str.toCharArray();

    int result = 0;

    for (int i = 0 ; i < strArr.length ; i++){
    if (strArr == 'I'){
    result += 1;
    continue;
    }
    if (strArr[i] == 'V'){
    result += 5;
    continue;
    }
    if (strArr[i] == 'X'){
    result += 10;
    continue;
    }
    if (strArr[i] == 'L'){
    result += 50;
    continue;
    }
    if (strArr[i] == 'C'){
    result += 100;
    continue;
    }
    if (strArr[i] == 'D'){
    result += 500;
    continue;
    }
    if (strArr[i] == 'M'){
    result += 1000;
    continue;
    }
    }
    return result;
    }
    [/i][/i][/i][/i][/i][/i]
    7/10
    Ответить Цитировать
    0
  • Цитата (kazkachi @ 24.10.2016)
    В первую очередь, как опытному программисту, я думал начать искать решение в гугле:)

    но так не интересно, поэтому вот решение в лоб:


    public static String fromDecimalNumberToRome(int a){

    StringBuilder sb = new StringBuilder();

    while(a != 0){
    if (a >= 1000){
    sb.append("M");
    a -= 1000;
    continue;
    }
    if (a >= 500){
    sb.append("D");
    a -= 500;
    continue;
    }
    if (a >= 100){
    sb.append("C");
    a -= 100;
    continue;
    }
    if (a >= 50){
    sb.append("L");
    a -= 50;
    continue;
    }
    if (a >= 10){
    sb.append("X");
    a -= 10;
    continue;
    }
    if (a >= 5){
    sb.append("V");
    a -= 5;
    continue;
    }
    if (a >= 1){
    sb.append("I");
    a -= 1;
    continue;
    }
    }
    return new String(sb);
    }

    public static int fromRomeNumberToDecimal(String str) throws IllegalArgumentException{

    Pattern p = Pattern.compile("[I|V|X|L|C|D|M]*");
    Matcher m = p.matcher(str);
    if (!m.matches()){
    throw new IllegalArgumentException();
    }

    char[] strArr = str.toCharArray();

    int result = 0;

    for (int i = 0 ; i < strArr.length ; i++){
    if (strArr == 'I'){
    result += 1;
    continue;
    }
    if (strArr[i] == 'V'){
    result += 5;
    continue;
    }
    if (strArr[i] == 'X'){
    result += 10;
    continue;
    }
    if (strArr[i] == 'L'){
    result += 50;
    continue;
    }
    if (strArr[i] == 'C'){
    result += 100;
    continue;
    }
    if (strArr[i] == 'D'){
    result += 500;
    continue;
    }
    if (strArr[i] == 'M'){
    result += 1000;
    continue;
    }
    }
    return result;
    }
    [/i][/i][/i][/i][/i][/i]


    Во второй программе не учитываются обратные перестановки. Если зададим параметр "XC", то получим результат 110, а не 90.

    И в первой тоже, если задаем 90, то на выходе должно быть XC, вместо LXXXX.
    Сообщение отредактировал FlySoHigh - 25.10.2016, 11:26
    9/20
    Ответить Цитировать
    0
  • Цитата (kazkachi @ 24.10.2016)
    throws IllegalArgumentException


    Айайай, зачем так делать? Непроверямые исключения в сигнатуре метода = визуальный мусор

    Ну и как уже написали, работает некорректно.
    73/1047
    Ответить Цитировать
    0
1 6 7 8 9 28 162
3 человека читают эту тему (3 гостя):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.s