Java kalkulátor CASIO-kompatibilní 

Vždycky mě štvalo, když jsem seděl u počítače a potřeboval něco spočítat, že jsem si musel brát k ruce kalkulačku CASIO, protože program Kalkulačka, co je součástí Windows, resp. kcalc který je součástí KDE, je typickou ukázkou neergonomické aplikace. Pokud má počítač klávesnici se 104 tlačítky, je přinejmenším hloupé kalkulačku realizovat jako aplikaci se soft-buttony, do kterých se uživatel musí trefovat myší. Navíc každý trochu složitější výraz se díky absenci funkce závorek počítá poměrně obtížně a jedna paměťová buňka je mnohdy málo. Proto jsem kdysi dávno, na Vánoce 2004, jako semestrální úlohu z předmětu Algoritmizace, naprogramoval Kalkulátor v jazyku Java. Číst dále...
[ zobrazit záznam ] ( 5636 zobrazení ) trvalý odkaz související odkaz ( 3 / 43567 )
Výpočet determinantu rekurzivním algoritmem 

Už je to dlouho, co jsem objevil kouzlo rekurzivních algoritmů pro takové úkoly, jako je výpočet faktoriálu, nebo řešení úlohy hanojských věží... Tehdy jsem si řekl, že by bylo pěkné pomocí takového algoritmu počítat determinant matice, metodou rozkladu podle n-tého řádku. Včera jsem si splnil sen:
#define MAX_R 10
#include <stdio.h>

double determinant(double matice[MAX_R][MAX_R], int rozmer) {
double det=0;
double submatice[MAX_R][MAX_R];

if (rozmer<1) return 0;
if (rozmer==1) return matice[0][0];

// rozklad podle prvniho radku
for (int i=0; i<rozmer; i++) {
//vypocet submatice
for (int u=0; u<rozmer-1; u++)
for (int v=0; v<rozmer-1; v++)
submatice[u][v]=matice[u+1][v<i?v:v+1];

det += (i%2?1:-1)*matice[0][i ]*determinant(submatice, rozmer-1);
}
return det;
}

int main() {
double pole[MAX_R][MAX_R]={{1,-2,1,2,4},{3,0,-1,1,-3},{2,2,2,3,5},{-2,-2,0,5,-2},{-2,3,-1,0,-2}};
double det;
det=determinant(pole,5);
printf("Determinant je %f \n", det);
return 0;
}
Program je napsán v C99 a díky staticky definovaným polím je extrémně paměťově náročný a minimálně škálovatelný.:) Podstata řešení spočívá v postupném zjednodušování problému až na úkol spočítat determinant matice 1x1, kterýžto je roven hodnotě jediného prvku matice. Všechny větší matice jsou podle prvního řádku rozloženy na menší a menší.
[ zobrazit záznam ] ( 5922 zobrazení ) trvalý odkaz ( 3 / 38951 )
Nemožnost přepnout VT z Xorg 

Po posledním updatu jsem narazil na kuriózní problém. Nešlo přepnout virtuální terminál pomocí Ctrl+Alt+Fn ve správci přihlášení kdm a tedy nebylo možné použít textový režim k přihlášení do systému. Přitom po přihlášení do KDE to šlo...

Pak jsem zjistil, že problém nastává jenom, když má X server nakonfigurováno víc jak jedno rozložení. Moje nastavení klávesnice souboru xorg.conf vypadá takto:
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"

Option "XkbModel" "pc104"
Option "XkbLayout" "us,cz"
Option "XkbOptions" "grp_led:scroll,grp:alt_shift_toggle"
EndSection
To proto, abych nemusel měnit zvyky z Windows a mohl klávesnici přepínat kombinací Alt+Shift, kde LED Scroll lock svítí při českém rozložení...

Navíc ovšem používám applet "Rozložení klávesnice" z KDE, který mi umožňuje stabilně přepínat klávesnici, tedy pamatovat si ve které aplikaci chci jakou (v terminálu anglickou, v ooffice českou). Bohužel tento aplet neumí pouze změnit skupinu, místo toho zavolá příkaz setxkbmap a tím celou klávesnici překonfiguruje. Takže úspěšně používám dvě úrovně přepínání klávesnice, KDE mi nastaví natvrdo anglickou klávesnici, a po stisku Win+K se objeví česká vlaječka, rozsvítí se Scroll Lock a klávesnice píše česky. Z téhle české klávesnice můžu odskočit do anglické pomocí Alt+Shift, ovšem vlaječka zůstane česká, pouze zhasne Scroll Lock (Tohle zařídí zatržítko "včetně rozvržení latinky").

Takže po přepnutí KDE na českou vlaječku přepnutí VT opět nefungovalo, protože byly nakonfigurovány dvě rozložení.

Nakonec se ukázalo, že řešení problému existuje a spočívá v nahrazení balíku "x11-misc/xkeyboard-config" balíkem "x11-misc/xkbdata". Bohužel nevím, proč :(. Prostě to po téhle operaci začalo fungovat. Tak doufám, že tahle informace pomůže alespoň Gentooistům.

Jinak důvod, proč jsem se vůbec chtěl přepnout do textové konzole, je ten, že jsem chtěl vyzkoušet novou verzi patche pro ssh přihlášení z agetty :)
[ zobrazit záznam ] ( 1412 zobrazení ) trvalý odkaz související odkaz ( 3 / 34615 )
Přímé SSH přihlášení z agetty 

Po čase zase jeden malý Linuxový drobek. Tentokrát pochází od Pavla Trollera, autora distribuce Sinux. Jedná se o patch, který dovoluje přímé přihlášení přes ssh na cizí stroj při zadání uživatelského jména ve tvaru user@host do výzvy programu agetty.

Jedná se o velmi praktickou funkci, kterou stojí za to mít i mimo Sinux. Proto jsem vyrobil overlay do portage pro balík sys-apps/util-linux, a nainstaloval na všechny stroje, co mám v dosahu :)
[ zobrazit záznam ] ( 1142 zobrazení ) trvalý odkaz související odkaz ( 3 / 28695 )
Nahrávání ze SH-TV 

Klub Silicon Hill Studentské unie ČVUT je rozhádaný jako ještě nikdy předtím. Ti rozumnější pochopili, že kdo uteče, vyhraje, což s sebou nese pro uživatele poněkud nepříjemný důsledek mimo jiné v podobě nefunkčnosti automatického digitálního videorekordéru TVgrab. No co, konečně mě to donutilo dopracovat svůj vlastní systém nahrávání, který zde předkládám.

Předně jsem se rozhodl nevytvářet žádný velký moloch (to bych ani neuměl) a místo toho maximálně využít programy, které jsou v linuxu k dispozici. Takže pro vlastní plánování jsem použil démona atd:
$ at 12:35 2007-12-01
warning: commands will be executed using /bin/sh
at> vlcrec 11
at> <EOT>
job 105 at 2007-12-01 12:35
Jak je vidět, použití příkazu at je vcelku intuitivní. Důležité je si pamatovat, že příkazu at předáváme jako parametr vždy nejdřív čas a pak datum. Samozřejmě, pokud plánujeme na poslední chvíli (méně než 24 hodin předem), není třeba datum udávat. Program at automaticky uloží celé aktuální prostředí, včetně aktuálního pra Číst dále...
[ zobrazit záznam ] ( 5888 zobrazení ) trvalý odkaz související odkaz ( 3 / 44877 )

<<První <Zpět | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Další> Poslední>>