Блог человека из лета

Возможно, здесь вы найдете что-то интересное для себя

Что должен знать Java-программист?
человек из лета
naissur1986
Сегодня пришла в голову мысль: чтобы иметь направление, в котором стоит двигаться, нужно выяснить для себя, чего требует среднестатистический работодатель. Поэтому я порылся на headhunter'e, произвел поиск по запросу "Java программист", и просмотрел несколько вакансий. Затем стал выписывать основные запросы к соискателю, отмечая, сколько раз встречались идентичные требования в разных вакансиях. На основании этой информации получился список из 22 пунктов.

Ествественно, он будет дополняться и видоизменяться, т.к. для более-менее объективной картины нужно проанализировать очень много вакансий (чем больше, тем лучше). А пока предлагаю вашему вниманию первую версию топ-10 этого списка*:

Read more...Collapse )

Сложных задач не бывает
человек из лета
naissur1986
В конце января я стал изучать Java. Начиналось тогда все с System.out.println("Hello world"). Задачи с циклами, условными операторами и иже с ними частенько вызывали замешательство. Сложно было разобраться даже в 20 строках кода. И это учитывая тот факт, что в школе я кодил на QBasic и Sinclair Basic, а в универе изучал Pacal и Delphi, вскользь коснувшись также и объектной ориентированности. Т.е. с принципами программирования я был знаком, основную сложность вызывал лишь новый для меня синтаксис Java, а также погружение с головой в ООП. Людям же, начинающим с круглого нуля, наверняка было в разы сложнее.

Сейчас я смотрю на те задачи, и они вызывают улыбку. Сейчас на очереди более сложные, запутанные, содержащие 100500 строк кода, кучу классов, треды и так далее... Иногда, открывая очередную задачу, даешься диву, думаешь: "Мать вашу так, да здесь же без 0,5 не разберешься!" А потом сидишь, перечитываешь несколько раз код, по возможности держа в уме производимые им операции. Вносишь изменения, запускаешь, оцениваешь результат. Повторяешь это десятки, сотни раз, и с каждым разом картина становится все более ясной.

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

Как достигать целей (часть 2)
человек из лета
naissur1986
Тем, кто не знаком с первой частью статьи, рекомендую причаститься перед чтением этой... Читать часть 1

* * *

Итак, в прошлый раз я рассказал о том, как правильно поставить цель. Сегодня же немного поговорим о мотивации.

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

Read more...Collapse )

JavaScript, console.log
человек из лета
naissur1986
В курсе по JavaScript на сайте codecademy.com, как я уже говорил, используется конструкция console.log. На codecademy она выводит строку, переданную в качестве параметра, в окно предпросмотра. Но однажды я решил покодить в Notepad++, а результаты своей работы проверять в браузере. И, вполне предсказуемо, обнаружил, что в окне моего гугл хрома строки, переданные в console.log, не отображаются. В курсе об этом не говорится ни слова. Но я решил разобраться сам.

Read more...Collapse )

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

Read more...Collapse )

Откладывание 15% от дохода
человек из лета
naissur1986
В субботу, в соответствии со своим давним планом, пошел в ближайший офис "Сбербанка" и открыл вклад сроком на один год. Закинул на него небольшую сумму и решил ежемесячно добавлять минимум 15% дохода. Ранее я много читал о полезности регулярного откладывания 10%, но также с удивлением обнаружил и противоположные мнения. Мол, откладывание - дело не только бесполезное, так еще и вредное.

Read more...Collapse )

Вывод на экран в JavaScript
человек из лета
naissur1986
Проходя курс по JavaScript на codecademy.com, несколько дней назад задумался о том, как можно вывести информацию на экран.

Вот в Java все элементарно: System.out.println("Hello, world") каждый знает с самого первого дня изучения языка. Но в JavaScript программу выполняет браузер. Кстати, этим мы и воспользуемся. Но обо всем по порядку.

Изначально я вычитал о функции document.writeln(str). Думал, она печатает str и переводит строку. Но не тут то было. Следующий код выдаст другой результат:

<script>
    for (var i = 1; i < 11; i++) {
      document.writeln(i);
    }
</script>

1 2 3 4 5 6 7 8 9 10

Если вместо writeln использовать write, то получится вообще такое: 12345678910. Т.е. writeln как бы добавляет знак переноса, но в браузере он отображается вовсе не так, как мы того ожидаем.

И тут приходит мысль: а ведь в строке можно передать и HTML-код. Попробуем:

<script>
  document.write("<p style='margin: 0px'>Hello</p>");
  document.write("<p style='margin: 0px'>World</p>");
</script>

Hello
World

Бинго! Мы просто вывели каждую строку как отдельный абзац с отступами по ноль пикселей.

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

В курсе на codecademy.com активно используется функция console.log(str). Она тоже выводит данные, но не на страницу в браузере, а на консоль. Причем ни слова не сказано о том, как эту консоль открыть. Поговорим об этом чуть позже.

Открытия, сделанные в отпуске: LifeGame.
человек из лета
naissur1986
С 11 по 23 октября я находился в доблестном городе-герое Смоленске. За это время сделал для себя три немаловажных открытия. О первом из них коротко расскажу сегодня.

LifeGame

Этот стартап еще в конце августа обнаружил как цель одного из участников сообщества SmartProgress. Был на тот момент в разработке, но заинтересовал меня, поэтому я зарегистрировался. И вот, примерно в середине октября, была запущена рабочая версия проекта. Пока он, правда, достаточно сырой, но по всей видимости дорабатывается.

Суть его в том, что у вас имеется по 3 очка навыков, которые вы можете распределять, на каждый день. Распределение этих очков увеличивает опыт, а с повышением уровня также и дает очки, которые можно пустить на открытие новых навыков. Всё как в знакомых многим MMORPG, на которые тратится уйма времени. Но главная фишка, на мой взгляд, в том, что навыки - это ваши профессиональные и личностные качества, и развивать их стоит по-настоящему, а не виртуально. Например, сходили в тренажерный зал - добавили одно очко к навыку "Спортсмен", написали, чем это обусловлено, и коротко прокомментировали.

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

Вообще, по задумке авторов, все это делается для прокачки крутого предпринимателя (бизнесмена). Но при желании вполне можно адаптировать это для совершенствования в любых сферах. Очень интересный момент - это таймер, который отсчитывает время до установленного вами при регистрации срока (лично мне осталось 20 лет, 3 месяца, 4 дня и 16 часов). Этот срок - своеобразная точка, в которой вы либо достигли желаемых результатов, либо ваша жизнь прошла зря, ибо после вы уже вряд ли чего-то добьетесь (да и нужно ли?).

Подсказки к задачам Javarush. level18.lesson10.bonus01.
человек из лета
naissur1986
Приветствую, друзья!

Сегодня решил задачу level18.lesson10.bonus01. Как оказалось, довольно простую. Но интересную. Одним из пунктов ее условия было следующее:

  Придумать механизм шифровки/дешифровки

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

Итак, что нам нужно сделать для решения задачи?

1) Создаем переменные для входного и выходного потоков (FileInputStream и FileOutputStream). Как видно из условия, имя входного файла у нас содержится в args[1], а имя выходного - в args[2]. Учить вас создавать такие переменные я не буду, т.к. "рубрика" называется "Подсказки к задачам...", а не "Готовые решения задач..." Подразумевается, что вы уже давным-давно знаете, как это делается.

2) Проверяем, чему равен параметр args[0] - "-e" или "-d". Я сделал это через switch.

  switch (args[0]) {
      case "-e":
          // шифровка
          break;
      case "-d":
          // расшифровка
          break;
  }

3) Самое интересное. Как выполнить шифрование и дешифровку?
Тут все просто. Методом read() мы побайтово читаем файл:

  int currentByte;

  while (fin.available() > 0) {
      currentByte = fin.read();
      // шифруем и записываем байт в выходной файл
  }

Для того, чтобы поменять прочитанный байт, есть over9000 способов, я же использовал элементарное добавление к нему константы. Итак, каждый байт я увеличил на 1. Таким образом, если, скажем, у нас была входная строка "Maximus", то на выходе получили строку "Nbyjnvt" (т.е. на соответствующих позициях попросту стоят следующие по алфавиту буквы). Можно прибавлять другое число, суть от этого не меняется.

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

Теперь, когда нам известно, что делать, задача должна решиться с первой попытки! Прям как у меня :-)
А если возникнут вопросы, пишите комменты.

Успехов!
Tags:

Размытие текста на изображении в XnView
человек из лета
naissur1986
Сегодня решил одну задачу по Java. Захотел поделиться изображением на стороннем ресурсе, но чтобы другие участники курса не видели всего кода, подумал, что нужно часть его размазать.
Немножко погуглил, осознал, что в стандартном виндовом Paint'е сделать это невозможно. Графические редакторы типа фотошопа или Paint.NET ставить не желаю. К счастью, всегда устанавливаю программу XnView для просмотра и редактирования изображений. Для моих нужд его возможностей всегда хватало (изменить разрешение, размер, обрезать, подкорректировать уровни и т.п.). Вот и в этот раз он тоже помог.

Итак, открываем изображение (у меня по умолчанию для этого используется XnView), выделяем его фрагмент, который нужно замазать. Далее выбираем в главном меню Filter - Effects... Откроется диалоговое окно Effects:



Величина размытия устананвливается выбором одного из пунктов в поле Filter Size. Я выбрал максимальное значение, чтобы даже профессиональные реконструкторы никогда не узнали, что же там было написано :)
Включив опцию Apply to Image, вы сможете наблюдать результат изменений в реальном времени, чтобы оценить, устраивает он вас или нет.

Завершив манипуляции, нажимаем ОК и сохраняем изображение (если необходимо оставить оригинал, то выберите Save As... и сохраните файл под другим именем).

Такие дела.

?

Log in

No account? Create an account