hoxnap

hoxnap

Пикабушник
поставил 4176 плюсов и 1188 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
10 лет на Пикабу
5006 рейтинг 110 подписчиков 13 подписок 45 постов 2 в горячем

Лайфхак.

После того как кетчуп перестанет течь из бутылки с широким горлышком, откройте бутылку, засуньте туда макароны (рис и т.д.), тряхните бутылку как-будто она маракас и открыв бутылку извлеките дополнительные 10 грамм кетчупа на еде. 

Вопрос к амбидекстрам.

Как вы определяете на какой руке носить часы?

Пикабу баг.

@admin, поправь пожалуйста. Тем кто попался - вертикальный скролл покажет спрятанную кнопку.

Пикабу баг. Баг, Пикабу

Симпсоны косяк (или самоирония)

Симпсоны косяк (или самоирония)

Лига картавых

Здравствуйте меня %usernamе% и я картавлю. Да всех картавых просили сказать "трактор трактор тыр-тыр-тыр, а в боку тринадцать дыр" или "триста тридцать три". Я обычно отвечаю "Я пират бороздящий просторы карибского моря употребляя ром агрх".

А ещё я люблю джин с грейпфрутовым соком, особенно со свежевыжатым. Пришли с другом посидеть в пиццерию. Из джина только брокерс =)

О - официант.  Здравствуйте, вы готовы сделать заказ?

- *друг делает заказ*

я - ... и сто брокерса и грейпфрутовый фреш.

о - простите, что ещё?

я - сто брокерса и грейпфрутовый фреш.

о - простите, я не поняла.

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

upd. оооо чё вспомнил. в маршрутке: за троих возьмите.

-за сколько?

-за троих

-за сколько?

-два и ещё один

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

Джава-2

Привет. Напоминаю в рамках тега изучениеджава (хейтерам банить именно его) я вместе с вами изучаю основы джава. Сегодня узнаем о типах данных. Этот пост будет очень длиннопост. Простите что мы ещё не кодим, но пока действительно рано. Скажу одно, эти три поста расписаны в учебнике на 60 страницах (у меня 5,5, с учётом того что треть отсебятина), с немного запутывающими ошибками.


Начнём с типов данных. Когда мы говорим/переписываемся с другим человеком мы передаём информацию (данные). Из курса школьной физики нам известно что звук - колебания воздуха (или другой среды), всё что мы видим - свет, отражённый от предмета, температура тела - внутренняя энергия его частиц... Если так же углубляться в информацию находящуюся на компьютере, то окажется что это всего лишь отсутствие (условно 0) или наоборот присутствие (условно 1) электрического заряда. И множество приборов переводят последовательность этих зарядов в изображение на экране, мелодию из колонок, текст в распечатке. Только представьте, мы имеем шесть органов чувств, которые передают всю огромное количество разнообразной информации в мозг. А у компьютера всего один орган чувств и тот знает только единицу и ноль. Однако разработчики помогли программистам и обучили Java восьми простым типам данных. Тип данных - правила структуры, использования данных, требования которых должен исполнять и компьютер, и программист.


* Начнём с самого лёгкого (имхо) типа данных - boolean. Данные такого типа имеют только два значения true и false (правда и ложь соответственно). Например: 2 < 3 = True. Применение: например вы создаёте приложение для взрослых >8-], и вам требуется чтобы пользователь подтвердил своё совершеннолетие. Если его возраст меньше 18, то выходим из программы; если нет, продолжаем.


* Символьный тип данных - char. Таким типом может быть представлен только символ, причём только один. Зайдите в меню пуск и наберите в поиске Charmap. Нажмите на дополнительные параметры. У вас должно появиться что-то подобное.

Джава-2 Изучениеджава, Программирование, Java, Длиннопост

C помощью текстовых полей выделенных зелёным можно узнать символ по коду или названию. Красным выделен Unicod (Универсальный код) символа. В Java этот код должен быть представлен следующим видом: \u**** (где вместо звёздочек четыре последних символа). Так в Java Пи можно представить как \u03C0. Символьный тип в Java использует именно юникод. Применение: передача символьной информации (цифры, знаки, буквы).


Также существует тип данных String (строковые данные) - данные состоящие из нескольких символов. Следует знать, что символ "f" и строка "f" - разные вещи, примерно как цифра и число. Хотя и гораздо удобнее набрать "ПРИВЕТ МИР" чем искать для каждой буквы юникод и потом подставлять их в нужное место, однако там где нужно использовать только один символ лучше использовать именно символьный тип данных. Если я не забуду, то напишу отдельную статью, почему именно так и как это работает.


Целочисленные типы данных - положительны и отрицательные без дробной части:

* byte. Все целые числа от -128 до 127. Применение: проценты громкости/здоровья, зрение человека, температура на улице.

* short. От -32768 до 32767. Применение: ревизия в магазине недосдача/плюс (коробок мыла, кг гвоздей), глубина/высота дна/горы.

* int (cокр. от Integer). От -2147483648 до 2147483647. Применение: карма на пикабу (ну а вдруг вы решили создать приложение для пикабу).

* long. От -9223372036854775808 до 9223372036854775807. Применение: честно даже не знаю, где может использоваться настолько большое отрицательное число и без дробной части. А вот положительное число, например, количество букв в документе, калькулятор секунд которые вы прожили.


Логично задать вопрос: а почему не использовать везде тип long и не запоминать три дополнительных типа данных. А я объясню. Грубо говоря, вся информация на компьютере храниться либо на жёстком диске, либо в оперативной памяти. Минус первого - маленькая (по сравнению с оперативной памятью) скорость записи/чтения информации. Минусы второго требует электричество (то есть если отключить питание, то вся информация из оперативной памяти пропадёт); разные операционные системы могут использовать ограниченное количество этой памяти. В современных домашних компьютерах, обычно, используется 4 Гб оперативной памяти = 4*1024*1024*1024 = 4294967296 байт. Использование в программе 536870912 данных типа лонг займёт всю память компьютера. Конечно, цифра кажется большой, однако здесь не учтены операционная система, офисные программы, а ещё музычку через контакт послушать, письмо отправить, а в оффисах жадный начальник поскупился добавить пару т.р. и не 4 Гб, а полтора на компьютере. Таким образом почти 537 миллионов снижаются до 20-30 млн. А если использовать short, то это число увеличивается в 4 раза. К тому же операция: 14 + 99, требует меньше ресурсов от процессора, если оба значения типа int, a не long. Почему так происходит объясняю ниже.


Помним, что информация в компьютере представлена единицей и ноликом? Очень похоже на азбуку морзе (только там короткий и длинный). Представим, что мы указали компьютеру выделить информацию под тип byte. Компьютер выделяет 1 байт равный 8 бит - восемь ячеек, в которые можно поместить 1 или 0 (поставить/убрать заряд).

Джава-2 Изучениеджава, Программирование, Java, Длиннопост

А как же он представляет там число? Очень просто: первая ячейка отвечает за знак числа - если в ячейке стоит 0, то значение положительно, иначе отрицательно. А вот дальше посложнее. Вспомните начальную школу, разряды (единицы, десятки, сотни, тысячи...) и составление чисел из цифр. У компьютера всего две цифры 0 и 1. Таким образом его счёт идёт следующим образом:

Джава-2 Изучениеджава, Программирование, Java, Длиннопост

Выделенные серым цветом ноли показаны лишь для того, чтобы вы помнили - в компьютерном представлении эти ноли существуют. Таким образом в памяти компьютера сохранены числа от 0 до 127 (итого 128 разных чисел). Отрицательные числа (первая ячейка принимает значение 1) считаются аналогично, только отправной точкой считается -128. От -128 до -1 также 128 разных чисел.

Джава-2 Изучениеджава, Программирование, Java, Длиннопост

Таким образом, первая ячейка показывает, что отсчёт идёт от -128 или 0, а остальные 7 ячеек показывают, сколько нужно отсчитать в сторону увеличения. Аналогично и с другими целочисленными типами данных только там разрядов побольше. Откройте виндузкий калькулятор>вид>программист.

Джава-2 Изучениеджава, Программирование, Java, Длиннопост

Фиолетовым обведено количество памяти выделяемое компьютером на расчёты сверху вниз соответствуют long, int, short, byte. Зелёным выделено число, введённое нами или полученное в результате расчётов. Красным выделено число из зелёного в компьютерном представлении, нижняя строчка количество нулей. Синим система счисления: Bin - компьютерное представление. Советую поставить 1 байт, Dec и прибавлять 1 и смотреть как будет изменяться число в красном. Также посмотрите, что будет, если к 127 прибавить 1. Подумайте, почему так происходит. Не закрывайте калькулятор, он ещё потребуется.


А теперь объясню, почему 14 + 99 в int, требует меньше ресурсов. В калькуляторе выберите 8 байт (соответствует типу long). Введите 14 (посмотрите в скольких ячейках стоит ноль), нажмите плюс и введите 99 (посчитайте количество нолей). Что, лень вам считать эти нули? А компьютеру приходиться эти ноли между собой складывать и хотя одно такое вычисление по времени не заметно для человека, в основном вычисления используются более трудные (несколько сложений, возведение в степень, деление) и для большого количества входящих данных. А вот в таком случае задержка уже может быть заметной.


Ну чтож последние два типа данных: *float (плюсминус ~3.4^38, 6 цифр после запятой), *double (плюсминус ~1.8^308, 15 цифр после запятой). Если мы в уравнении используем число типа флоат (меньше памяти и быстрее расчёт) то в конце числа необходимо ставит "F", иначе число будет принято за double. Однако в связи с особенностями вычислений: 2.0 - 1.1 = 0.89999999. К счастью это лечится. Но об этом в следующий раз.

Показать полностью 5

Джава-1,5

Привет. Напоминаю в рамках тега изучениеджава (для хейтеров) я вместе с вами изучаю основы джава. В сегодняшнем посте узнаем о структуре кода в Java. Пост небольшой и является предпосылкой к понедельнечному посту (который переноситься на среду 24.02.16 ввиду выходного), чтобы не нагружать большим объёмом информации разово, дать немного осмыслить и задать вопросы.

В прошлом посте мне посоветовали код вставлять изображениями. С одной стороны, в таком виде код более читабелен и даёт более ясное представление о структуре программы, с другой стороны не скопипастишь. Копипаст, в данном случае - плохая вещь. Из личного опыта: в школе я обучался QBasic'у, у нас было что-то наподобие методичек. Нам давалось 30 минут на изучение главы (по три-четыре страницы на главу), в это время мы могли кодить-экспериментировать, спрашивать по непонятным моментам у препода, после чего шла письменная проверочная с 2 задачами (методичка оставалась при учениках). По тем главам с которых я набирал код у меня было 4-5, а когда я прочитал, подумал что понял, схлопотал 3. В текущем и последующих постах я буду вставлять код в виде изображений, а в конце главы (или отдельным комментарием) текстовое представление кода.

В предыдущем посте было обозначено, что такое исходный код. Так вот, исходный код является начальной точкой на пути программирования в Java. Именно от того как написан исходный код будет зависеть будет ли и как будет работать написанная программа. Запускаем eclpise. File>New>Project. Имя проекта Nux, остальное без изменений. Finish. Кликнем ПКМ по NUX в Project Explorer. New>Class. Имя класса также Nux. Ставим галочку напротив public static void main (String[] args). OK. В результате должно появиться следующее (я добавил несколько пустых строк, чтобы выделение не перекрывало символы):

Джава-1,5 Java, Длиннопост, Программирование

Разберём что есть что. Для начала представим, что мы варим суп (так будет легче)

Под номером 1 выделен класс. Это кастрюля, в которой мы варим суп. Можно увидеть, что чёрными овалами выделены и две фигурные скобки - открывающаяся и закрывающаяся. При помощи таких скобок человек указывает границы - начало и конец, класса (и некоторых других вещей). Если попробовать поместить вне границ <s>кастрюли</s> класса какую-либо надпись, появится предупреждение об ошибке. Практически весь код должен быть написан внутри класса (овощи вы ведь режете ножом, так и в джава есть свои "ножи" до них ещё далеко).

public (созвучно с "публичный") - модификатор доступа, слово, которое обозначает кто и что может сделать с нашим супом. В данном случае все, кто живёт с нами могут заглянуть и посмотреть, что в кастрюле, а ещё заменить всё мясо на картошку. Private (аналогия "приватная вечеринка") означает, что посмотреть содержимое кастрюли могут только те, кто находится в кастрюле (чёрный юморок). Таких модификаторов много, мы их рассмотрим позже.

class - та самая кастрюля.

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

* имя должно начинаться с буквы, остальная часть буквы и/или цифры. Использование в качестве имени "1nux", "nux dss" или "nux@" вызовет ошибку. Хотя и возможно использовать в качестве разделителя нижнее подчёркивание "_", в Java принято вместо "My_name_is_Vasya" использовать "MyNameIsVasya"

* следите за регистром (это касается всего кода): Main; mAin; main и MAIN - разные вещи. Иными словами, если в имя класса Nux, то попытка использовать в другом месте nux вызовет ошибку (или обратится к классу nux)

* отсюда ещё один пункт, старайтесь не называть классы похожими именами. Nix; Nlx; N1x - плохой пример для имени.

* в качестве имени нельзя использовать некоторые слова (например, public, class, ...), такие слова называются зарезервированными. Список этих слов я предоставлять не буду, если вы вдруг напишите в качестве имени зарезервированное слово, появиться предупреждение об ошибке.

Теперь рассмотрим область, выделенную красным (2). Это так называемый метод. Как видите он тоже органичен фигурными скобками. Внутри метода пишутся те самые строки, которые и будут выполнять какую-либо работу: что-нибудь посчитать или сравнить, картинку показать, нажатые клавиши записать. Метод по сути является ингредиентами супа, а то что в них написано составляющими ингредиентов (у свёклы, например, это сахар, красящее вещество, остальная приблуда). Таким образом работа программы (как и вкус супа) будет зависеть от того что мы в ней напишем. Если мясо тухлое, то с хорошими овощами суп всё равно будет не вкусный. Работа программы выполняется, начиная с метода main. Теперь по словам:

* public - аналогично тому что в классе. Модификатор доступа main'a может быть только public

* static void - пока не заморачиваемся, если интересно погуглите, но я расскажу об этом не сейчас.

* main - имя метода

* (String[] args) – аргумент метода. Можно посчитать его за рецепт супца. Кто-то кладёт в щи квашенную капусту, а кто-то свежую. Так же и результат программы можно изменить, указав ей аргументы (конечно, если использует аргументы и на их основе выполняет ту или иную свою часть). Возможно вы запускали какие-то игры с параметрами (через свойство ярлыка на программу) типа –god; -DEVMODE; -sv_cheats_1.

Стоит отметить: мы можем создать несколько методов main(), Main(), main(Strings[] args). В данном случае основным будет считаться последний (аргумент является решающим фактором)

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

* Однострочный. Начинается с двух косых чёрточек // и заканчивается в конце строки. Пример:

// эта строка прибавляет один к иксу

* Многострочный. Начинается с /* заканчивается */ . Пример:

/* Эти 100+ строк пересчитывают бухгалтерскую документацию

С учётом факторов погоды, кофейной гущи и великих шнурков рандома */

* Документационный. При помощи инструмента Javadoc можно создать HTML-версию инструкции по использованию какой-либо части кода. Начинается с /** , каждая строка должна в начале содержать звёздочку, заканчивается */ . Пример:

/**

* <p>И достал он нефритовый стержень</p>

* <p>И воткнул в жабу богомерзкую</p>

*/

Вот тут можно почитать о необходимости комментариев.

И тут.

Показать полностью 1

Джава-1

Привет. Ну чтож джава, так джава. (для хейтеров тег изучениеджава)

Данная статья будет нудной и скучной, но в конце будет пряник.

Java был создан компанией Sun Microsystems в 1995 и развивался до 2008. В 2009 для компании чуть не наступил п****ц и её поглотила Oracle, в которой на Java было положено вплоть до 2011. На данный момент джава (по некоторым данным) занимает первое место в рейтинге языков.

Говорить что Java - язык программирования не совсем верно. Скорее Java - система, включающая бла, бла, бла. Так говорят в целом несколько источников.

Что же такое Java простым языком? Будем считать Java рукой. Взгляните на руку, которая у вас на мышке (тачпаде, экране, ..). Разделим её <s>бензопилой</s> мысленно на плечо, предплечье, ладонь и пальцы. Как и части в руке, так и части (компоненты) в Java взаимодействуют между собой. Наверно единственное отличие в том, что Java может обходиться без пары-тройки частей, а поковырять в носу без пальцев будет трудновато.

Вам наверно хочется спросить: "Что же это за компоненты и как они взаимодействуют?".

Джава-1 Изучениеджава, Длиннопост, Программирование, Java

Основным компонентом в системе Java является библиотека, в которой написано где, когда, почему и как всё это обязано работать. Основываясь на этих правилах человек и пишет код, который будет делать то, что нужно человеку. Такой код называется исходным.

Компилятор преобразует исходный код в файл написанный по правилам из всё той же библиотеки - исполняемый файл. Перевод кода понятного человеку в код для машины (компьютер, планшет, терминал ...) называется компиляцией.

Теперь у нас есть код скомпилированный по правилам библиотеки. И вот тут появляется основное отличие от многих из других языков. Многие языки при компиляции создают программу, заточенную под конкретную операционную систему и/или разрядность. То есть программа, написанная в MacOS не будет работать в Windows, или программа, написанная на старой Windows XP возможно не будет работать в семёрке, и наоборот. Представьте, что вы умеете играть на гитаре, но вдруг вам в первый раз дают в руки фортепьяно. Что-нибудь лёгкое (в траве сидел кузнечик) вы конечно сыграете, не сомневайтесь. Более сложная композиция, увы, вряд ли у вас получится. То же самое происходит и при попытке запустить программу, созданную в другой операционной системе (в дальнейшем ОС).

Java обходит эту проблему следующим образом. Формат и содержание скомпилированного в файл кода не зависят от ОС. Более того этот самый код вообще не понятен никакой из ОС. А понятен он только для специальной программы - Java Virtual Machine (JVM - виртуальная машина Java), которая написана на конкретные ОС (). Именно JVM преобразует скомпилированный код в понятный для конкретной ОС: JVM читает из файла с кодом определённую часть, обращается к библиотеке чтобы узнать что должна делать эта часть и переводит эту часть в язык понятный конкретной ОС. Скомпилированный в данном и подобных случаях код называется байт-кодом.

Скорее всего на вашем компьютере установлена JVM, с помощью которой работают несколько приложений. Помните я говорил, что Java может работать без некоторых частей? Так вот этими частями являются средства для разработки программ. Сейчас мы с вами их установим. Для начала нам нужна та часть с помощью, которой мы и будем программировать, возможно она у вас есть. Чтобы проверить это откройте командную строку и наберите: Java -version

Если у есть Java, то будет выдана её версия, у меня, например, стоит 1.8.0.73. Если нет, то идём сюда и качаем JDK SE (средства разработки на Java - стандартная) последней версии.

При установке вам предложат установить в C:\Program Files\Java\jdk(тут версия), Program Files лучше убрать. Установили? прекрасно. Зайдите в папку в которую вы установили Java и посмотрите, что же там есть: в папке jre находится всё необходимое для работы приложений написанных на Java (то есть если мы не хотим программировать на Java остальные папки нам не к чему); папка db служит для развёртывания Apache'евской базы данных (нам до туда как до луны пешком); include (в ней находятся с++ и c скрипты) пока тоже не для нашего внимания; лицензионные соглашения, ридми, приветствие от разработчиков Java; в папке bin находятся компилятор и помощники в разработке на Java.

Чтобы легко работать со средствами из папки bin нужно выполнить следующие шаги:

* откройте меню панель управление, выберите пункт система (система и безопасность\система)

* дополнительные параметры системы (слева), вкладка дополнительно, переменные среды

* в системных переменных найдите Path

* добавьте в начале путь к папке jdk\bin поставив точку с запятой на конце (у меня C:\Java\jdk1.7.0_79\bin;) (если путь содержит пробел его необходимо заключить в кавычки "C:\Program Files\Java\jdk1.7.0_79\bin"; )

* ок, ок, ок, закрыть.

Всё сделали правильно? проверка: Java -version

Папка lib (посмотрите она почти похожа на ту что находится в папке jre, но чуть побольше), логично предположить что это стандартная библиотека для пользователей плюс немного для разработчиков. Так оно и есть это та самая библиотека

Исходный код этой библиотеки находится в src.zip. Рекомендуемая распаковка архива:

* создайте папку src и переместите туда архив.

* запустите командную строку

* выполните команду cd /d путь_до_папки_src (у меня cd /d C:\Java\jdk1.8.0_73\src )

* выполните команду jar xvf src.zip

Если вы следовали инструкции то, скорее всего в командной строке у вас помчится длинный список, а в папке src появятся 6 новых папок. Когда мы поймём язык джава, здесь можно будет посмотреть, как что работает.

Здесь можно посмотреть документацию по Java

Теперь можно писать программки в блокноте, после с помощью командной строки компилировать, а потом и запускать. Если ошибка то всё заново - долго, неудобно.

Гораздо удобнее будет работать в программе, в которой можно и программировать, и сразу посмотреть выполнение программы, и ошибки исправлять быстрее, и скомпилировать программу. Такими программами являются интегрированные среды разработки. Мы будем использовать eclipse, ибо мне это название нравиться больше, чем у остальных.

Качаем Eclipse IDE for Java EE Developers. При запуске у вас спросит папку куда по умолчанию будут сохраняться коды программы. Можете выбрать единожды и поставить галочку чтобы больше не спрашивало.

Всё что нужно мы установили. Теперь можно и попрограммировать. Но это только через понедельник. А пока пирожок как и обещал (исходник отсюда):

* запускаем eclipse

* file -> new -> project

* Java project -> Next

* в Project name - fractal

* use defult jre

Джава-1 Изучениеджава, Длиннопост, Программирование, Java

* finish

* no

* в списке слева щёлкаем правой кнопкой мыши по fractal

* new -> class

* в поле naim вводим fractal

* открываем fractal.java и вводим следующий код

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

import javax.swing.JPanel;


public class fractal {

private static final double SX = 0.005;

private static final double SY = 0.005;

private static final int WIDTH = 640;

private static final int HEIGHT = 480;

private static final double DX = -350;

private static final double DY = -235;

private static final int COUNT_ITER = 100;

private static final int BAIL_OUT = 16; //вот тут можно поиграть

private static final int STEP_X = 10; //и тут

private static final int STEP_Y = 10; //и тут


private static void drawClouds(Graphics g) {

for (int i = 0; i < WIDTH; i += STEP_X) {

for (int j = 0; j < HEIGHT; j += STEP_Y) {

double c = SX * (i + DX);

double d = SY * (j + DY);

double x = c;

double y = d;

double t;

int k = 0;

g.setColor(new Color((float)Math.random(),

(float)Math.random(), (float)Math.random()));

while (x * x + y * y < BAIL_OUT && k < COUNT_ITER) {

t = x * x - y * y + c;

y = 2 * x * y + d;

x = t;

g.drawOval((int) (x / SX - DX), (int) (y / SY - DY), 1, 1);

++k;

}

}

}

}


public static void main(String[] args) {

JFrame frame = new JFrame();

frame.addNotify();

frame.setSize(frame.getInsets().left +

frame.getInsets().right + WIDTH,

frame.getInsets().top +

frame.getInsets().bottom + HEIGHT);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


frame.add(new JPanel() {

@Override public void paintComponent(Graphics g) {

super.paintComponent(g);

drawClouds(g);

}

});

frame.setVisible(true);

}

}

* запускаем

* ???

* profit

если доигрались то windows -> perspective -> open perspective -> debug там будет кнопка stop

Джава-1 Изучениеджава, Длиннопост, Программирование, Java
Показать полностью 3
Отличная работа, все прочитано!