Результаты поиска потегупрограммирование

Дополнительные фильтры
Теги:
программированиеновый тег
Автор поста
Рейтинг поста:
-∞050100200300400+
Найдено: 703
Сортировка:

Джависты реактора, направьте меня на путь истинный!

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

 На свою же голову, сделал я то приложение на Swing'е. И чёрт меня побрал в него влюбиться. Всё так... Логично. Понятно. Мечта. Из за этого ощущения "правильности" я в своё время и взял джаву.

 Прошло некоторое время, и у меня зародилась сделать кое-какое приложение для себя и узкого круга людей. Было решено взяться за JavaFX, ибо мне не многозначно намекнули, что Swing мёртв. Но я не могу. ФХ делает мне очень больно. Особенно этот сраный Scene Builder... 

Собственно, два пути передо мною: Использовать куски JavaFX в Swing. (По заветам Оракла
Или где-нибудь научиться строить приложения JavaFX методами Swing. (Т.е. создание кнопки прямо в коде, ивенты хандлеры рядом с кнопками, обойтись БЕЗ СРАНОГО FXML)

И какой путь выбрать? Может, есть дискорд-чат программистов, где я могу попросить помощи?

Чисто теоретически, я бы мог обойтись чистым Swing, но некоторые выкрутасы дорого обойдутся.
Для тех, кто скажет, мол, шли нахуй свинг, и учись чистому FX -- Я так не смогу. Гуй для джавы и так вещь второстепенная, а впереди ещё изучение spring, maven...
КУПОН
НА 1 помощь,it,java,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,языки программирования,пидоры помогите,реактор помоги

Странности эффекта BLUR в браузерах

Захотелось мне сделать а всплывающего лайтбокса эффект матового стекла.
Первым делом гугл выдал мне ссылку на сайт: https://developer.mozilla.org
ну захожу беру код оттуда. Все просто : строка CSS {backdrop-filter: blur(8px);} и всё :)
но листаю ниже и :
как так?
ведь код с мозиллы :
0 А https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter,firefox,браузеры,chrome,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,приколы для программистов,css,html
возможно у меня FireFox старый? :
О Мо/Ла Ричг1ох
Р1гей>х Browser
'У Уст^ювп^в последняя версия НеАох
88.0.1 (6+€ит***) Что нового
Саааадйу&а
^тср^т ОСТАВАЛСЯ ОТКРЫТЬ*. публична и доступ*»* для осе» И КАЖДОГО.
Хотите попу+>? Слегайте по*ертвос<з*«е или присоединяйтесь»
ПРДМ	ПМЫИ«!ОТ1
ПИКНМЯММТЯИДМ
* тпгяш Р*ч*о* ■•.-я^тс*
да нет, тут все норм
Firefox Browser
-У Установлена последняя версия Firefox 88.0.1 (64-6итный) Что нового,firefox,браузеры,chrome,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,приколы для программистов,css,html
ЧТО НЕ ТАК ТО??
Francesco Napoletano #
@napolux
v
Give a man a program, frustrate him for a day. Teach a man to program, frustrate him for a lifetime.
12:30 PM -11 May 20 Buffer
492 Retweets 1,759 Likes,it юмор,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,twitter,интернет

ОСдев №10: основной загрузчик, часть 3. GDT.

Подготовительный этап закончен, можно приступать к интересному. Кроме собственно загрузки файлов наша программа должна подготовить для ОС рабочую среду. Это значит: переключить процессор в 32/64-битный режим, настроить таблицу прерываний и создать базовую GDT. Сегодня разберёмся с последним пунктом.
GDT - сокращение от Global Descriptor Table, глобальной таблицы дескрипторов. Что это такое? По сути - набор записей одинакового формата, описывающих области памяти и разрешения, которые они имеют. Упрощённо это выглядит так:
//область 0
адрес области
размер области
параметры доступа
флаги
//область 1
адрес области
размер области
параметры доступа
флаги
...
В 32/64-битном режиме дескрипторные таблицы используются вместо старой схемы адресации сегмент:смещение. Зачем? Сегмент:смещение - небезопасная технология, которая позволяет переписать любой участок памяти. Надо ли говорить, что при неосторожном обращении это легко может закончиться бедой? Дескрипторная таблица даёт возможность ограничить запись или выполнение кода в отдельных областях RAM. Дескрипторные таблицы появились как часть аппаратной защиты памяти вместе с 286 процессором.
Как это работает? После выхода из 16-битного режима процессор больше не принимает адреса в формате сегмент:смещение. Если попытаетесь так сделать - получите исключение GPT (General Protection Fault). Вместо этого в сегментном регистре процессор ожидает получить смещение дескриптора внутри ДТ. При этом для операций над этим сегментом будут действовать правила, указанные в дескрипторе. Например, попытка обратиться к памяти за пределами сегмента или запись в защищённый от записи сегмент будут вызывать исключения (кстати, про обработку исключений поговорим позже, пока давайте примем, что это фатальная ошибка, которая приведёт к остановке программы).
Кроме глобальной таблицы дескрипторов существуют ещё локальные (ЛДТ), TSS и таблицы дескрипторов прерываний (IDT). Для того, чтобы наша ОС могла начать работу, обязательно наличие только двух таблиц: GDT и IDT. Давайте теперь взглянем на GDT поподробнее. Скажу сразу, зрелище будет не очень приятное. Но начнём с лёгкого. Так как GDT - часть аппаратной схемы защиты памяти, у неё есть свой регистр: GDTR. Это 48-битный регистр, 4 байта которого предназначены для смещения GDT, а 2 - для её размера. Таким образом, GDT не может быть больше 65536 байтов в размере. Размер записи в GDT - 8 байтов, значит,< таблица может иметь максимум 8192 дескриптора. Зная всё это, хорошим тоном было бы сразу зарезервировать 64К под GDT, но в моей архитектуре ОС создаёт свои таблицы, так что сейчас я обойдусь минимумом. Минимум в данном случае - 3 дескриптора. Нулевой, сегмент кода и сегмент данных. Зачем отдельно выделять нулевой дескриптор? Дело в том, что обращение к нему в GDT приводит к, вы угадали, исключению. Это тоже своего рода мера предосторожности.
А теперь время взглянуть на структуру дескриптора. И тут, увы, наследие тяжёлого прошлого во всей красе. Ради обратной совместимости в кодом для старых процессоров дескриптор GDT превратили в кашу.
Первые два байта - это первые 16 битов границы сегмента.
Следующие три байта - первые 24 бита основания сегмента.
Следующий байт - параметры доступа. Рассмотрим ниже.
Следующий байт совмещает в себе биты 16-19 границы и флаги. Об этом тоже подробнее ниже.
Ну и последний байт - биты 24-31 основания.
Неудобно? Не то слово. Когда будем писать ядро - обязательно замутим процедуру для комфортной работы с этим месивом. К счастью, сейчас у нас статичная структура всего из трёх сегментов, так что заполнить можно и вручную. Создадим и подключим модуль GDT.inc. Как это сделать, мы рассматривали в прошлый раз. И добавим в него вот такую таблицу:

Это и есть наша GDT, ничего ужасного. Значения в нулевом дескрипторе для нас не важны, а вот остальные давайте рассмотрим подробнее. У нас есть два дескриптора: один - для кода, другой - для данных. Оба начинаются с 0 и занимают FFFFF*4Kib = 4Gib. Фактически это значит, что, начав работать, ОС сможет использовать всю память по своему усмотрению. Давайте теперь разберём параметры доступа и флаги.
Бит 1 - флаг чтения/записи. Его значение различается для сегментов кода и данных.
Для сегментов кода установленный флаг означает, что чтение разрешено.
Запись в сегменты кода запрещена всегда.
Для сегментов данных установленный флаг означает, что разрешена запись. Чтение из сегментов данных
Таким образом, значение параметров доступа 10010010b даёт нам вот что: это сегмент данных, запись в него разрешена, сегмент растёт вверх, уровень привилегий - ring0. А теперь флаги. Биты 0-3 здесь заняты границей сегмента, не обращаем на них внимания.
Бит 4 зарезервирован и должен быть равен 0.
Бит 5 указывает на 64-битный сегмент. Так как мы пока переходим в 32-битный, должен быть равен 0.
Бит 6 указывает на 32-битный сегмент. Наш выбор, устанавливаем в 1.
Бит 7 - гранулярность. Если равен 0, то значение границы сегмента используется как
Окей, теперь у нас есть GDT. Но как указать системе, что её нужно использовать? Процессор ведь не дурак, сам искать не станет. Всё просто, джентльмены из IBM в кои-то веки о нас позаботились. При помощи специальной ассемблерной команды lgdt (load GDT) мы можем передать в регистр GDTR линейный адрес таблицы и её размер. Для этого добавим перед GDT такую структуру:
60ТК_р1:г:
dы 00171п	;Размер таблицы - 1 (23 байта).
dd 00000000И	;Абсолютный адрес таблицы.,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,OSDev,Операционная система,ассемблер,разработка,длиннопост
Размер таблицы мы уже знаем, а вот адрес придётся посчитать, так что пока оставим 0 и напишем процедуру инициализации GDT:
init_GDT ргос
init_GDT endp
push eax pushfd
xor eax,eax
mov ax,offset GDT
add eax,00000500h
mov dword ptr [GDTR_ptr+2],eax
cli
lgdt pword ptr GDTR_ptr sti
popfd pop eax ret,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,OSDev,Операционная система,ассемблер
На случай, если тут не всё очевидно, поясню. Мы помещаем в EAX смещение GDT относительно сегмента, а потом добавляем адрес сегмента*16. Это и есть линейный адрес, сохраняем его в структуре. После этого отключаем прерывания, передаём структуру процессору командой lgdt и включаем прерывания обратно. По идее прерывания можно не трогать, так как в 16-битном режиме GDT не используется, но я перестраховщик.
Собственно, на этом всё. Добавьте вызов init_GDT в конец загрузчика перед cli и дело в шляпе. Сегодня без картинки, но вот вам котик.
Чистая дискета: https://drive.google.com/file/d/1Bold4ds8oEruHQ7fJZKHglVo7A2Vc5MR/view?
Предыдущие части:
Оно работает!
иии да, у меня экран 4 на 3

Отличный комментарий!

Я как-то занимался выклянчиванием кофемашины и дивана для команды программистов, первое время руководство обещало принять во внимание, потом стали ссылаться на закупки на следующий сезон, в итоге приводили в пример ответственного работника из другой команды, который сам купил за свои деньги и принес кофемашину для своих, еще описывали трудяг-программистов, которые сами себе стулья в офис покупали. Даже и сказать нечего. Долго в этом месте я не проработал.
На моём первом месте работы начальник, как увидел сколько сахара я кладу в чай (9-10 ложек), сказал чтобы я пользовался своим.
9-10 ложек... Для меня 2 уже слишком сладко
,Буквы на белом фоне,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,работа
Машина по переработке глюкозы в говнокод ¯\_(ツ)_/¯
Тимлид хвалит меня за то, что я успел закончить кнопку, которая закрывает приложение
А кнопка на самом деле крашит его,it юмор,it,тимлид,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор

Отличный комментарий!

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

настоящий герой остаётся в тени

,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,hello world,программирование
Художник после 30 минут:
«О да, это просто быстрый набросок»

Программист после 3 часов:
«Я написал 3 строчки кода и сломал вообще все»

Отличный комментарий!

Ученый
,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,художник
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме (+703 постов - )