C, PHP, VB, .NET

Дневникът на Филип Петров


Авторски архив

* Набиване на лагерна втулка за гребло на багер

Публикувано на 21 декември 2013 в раздел Общи работи.

Проблемът с набиването на лагерна втулка с големи размери е неприятен. При удряне с чук втулките обикновено се чупят. Затова обикновено се носят на преса, което пък е скъпо и неприятно удоволствие. В следващата галерия показвам един доста лесен и почти безпроблемен начин за справяне с проблема за по-малко от 5 минути: Прочети още...

.

 


* Един от тези моменти…

Публикувано на 21 декември 2013 в раздел Общи работи.

Ето един от тези моменти в живота, в които човек преглъща нервно докато натиска YES. Графика моля: Прочети още...

.

 


* Чат сървър и клиент с GUI

Публикувано на 17 декември 2013 в раздел ПИК3 Java.

В това упражнение беше показано как може да се изгради графичен интерфейс за чат клиент приложението от предишното упражнение. Използва се Swing, като се използват различни контроли - JLabel, JTextArea, JScrollPane, JTextField и JButton. Освен допълнителния клас (ClientGUI) има промени по другите два - в ClientThread всички System.out.println са променени така, че да обновяват графичните контроли, а в основния клас Client e премахната функционалността за четене на съобщение от клавиатурата чрез конзолата (тази дейност е прехвърлена към действието на бутона). Промени по сървъра няма и той продължава да си работи в конзолен режим. Демонстрирани са два често използвани Layouts - FlowLayout и BorderLayout - за разполагане на контролите. Не на последно място - използва се Event Dispatch Thread (EDT) чрез SwingUtilities.invokeLater(...), за да се прави синхронизирано обновяване на информацията по графичния интерфейс. Прочети още...

.

 


* Мария Илиева и Zafayah – Условие №1

Публикувано на 30 ноември 2013 в раздел Музика.

Не съм фен на регето, но тази песен много ми хареса. Чух я в X-Factor по телевизията. За първи път песен на Мария Илиева ми харесва от първия път - обикновено ги оценявам като добри чак след като са спрели да са модни и спрат да ги пускат по радиото. Прочети още...

.

 


* Consumer-Producer – двустранна синхронизация с много консуматори и много производители

Публикувано на 29 ноември 2013 в раздел ПИК3 Java.

В предишните примери се забеляза нещо много неприятно - кодът се обърква все повече и повече. Причината за това е, че при множество играчи, не само производителя трябва да уведомява консуматора и обратно, а и самите консуматори и самите производители трябва да се синхронизират помежду си. Поради тази причина ще е по-добре ако оптимизираме идеята за централно синхронизиране на всички чрез "чинията".

В този пример има споделен ресурс – чиния с храна. За нея има ограничение какво количество храна ще поеме - максимум 10 единици (по този начин усложняваме задачата, защото хората трябва да се изчакват!). Кучетата ще нападат чинията в произволен ред. Ако в нея няма храна, кучето се отдръпва, за да даде възможност на човек да добави храна (има continue в цикъла на run метода). Същото вършат и хората - те сготвят храната и гледат купичката. Ако тя е пълна, те се отдръпват и чакат. Поддържат се броячи за броя на активните кучета и активните готвачи. Ако готвачите станат повече от кучетата, някой от готвачите ще спира работата си. Прочети още...

.

 


* Consumer-Producer – едностранна синхронизация с много консуматори и един производител

Публикувано на 29 ноември 2013 в раздел ПИК3 Java.

В този пример има споделен ресурс – чиния с храна. За нея няма ограничение какво количество храна ще поеме, затова producer (в случая Human) ще я пълни още и още независимо дали е пълна или празна. Кучетата ще се редят едно след друго и ще чакат да се напълни чинията. Използва се централен mutex, с който кучето заявява пред човека, че търси "събуждане" (notify). Това се прави, за да се предотврати race condition, в който две кучета са събудени последователно и второто изяжда съдържанието на празна чиния (първото е изяло всичко, а човекът все още не е успял да сготви ново ястие). Освен това чинията вече е направена като обект, за да може да се синхронизира по него. По този начин се избягва race condition, при който човекът сготвя ястия в периода между пълненето на стомаха на кучето и нулирането на съдържанието на чинията. Прочети още...

.

 


* Consumer-Producer – двустранна синхронизация с един консуматор и един производител

Публикувано на 28 ноември 2013 в раздел ПИК3 Java.

В този пример има споделен ресурс – чиния с храна. За нея има ограничение какво количество храна ще поеме, затова producer (в случая Human) ще гледа дали в чинията има храна или няма. Ако има, той трябва да изчака кучето да се наяде. Ако няма, той ще сложи сготвеното в купичката. Кучето, което яде от чинията, от своя страна също ще гледа дали в купата има храна или не. Ако има храна, то ще я изяде. Ако няма, то ще изчака човека да го повика. Прочети още...

.

 


* Consumer-Producer – едностранна синхронизация с един консуматор и един производител

Публикувано на 28 ноември 2013 в раздел ПИК3 Java.

В този пример има споделен ресурс - чиния с храна. За нея няма ограничение какво количество храна ще поеме, затова producer (в случая Human) ще я пълни независимо дали е пълна или празна. Кучето, което яде от чинията, от своя страна ще гледа дали в купата има храна или не. Ако има храна, то ще я изяде. Ако няма, то ще изчака човека да го повика. Прочети още...

.

 


* Честит първи сняг!

Публикувано на 27 ноември 2013 в раздел Семейни.

В паркът вече всичко е покрито с педя сняг. Пепи за първи път се разходи сам в снежните "преспи".

DSC01655 Прочети още...

.

 


* Контролна работа 23.11.2013

Публикувано на 23 ноември 2013 в раздел ПИК3 Java.

В електронна игра има три вида герои – войни (warriors), стрелци (archers) и варвари (barbarians). Всеки от тях разполага с две основни сили: атака (attack) и защита (defence) – и двете цели числа (тип byte) – както и определено количество живот (health), отново цяло число (тип byte), което първоначално винаги заема максималната си стойност 127. Прочети още...

.