Warsztat » Forum

[Projekty] Programy ułatwiające życie

Dec 24, 2005 | Koshmaar |
28 wypowiedzi na 2 stronach:
1 2
Koshmaar
Dec 24, 2005

Programy ułatwiające życie

Witajcie

W swoim poście chciałbym poruszyć następujący wątek - programiści, jako osoby bardzo dobrze zaznajomione z komputerami, ciągle ich używające, z pewnością nie raz zetknęły się ograniczeniami softwarowymi - a to jakiś program nie działa tak jak chcemy, a to jakaś drobna pierdółka w nim nam przeszkadza, a to być może jakiś program, którego chcielibyśmy używać, w ogóle nie istnieje. W przeciwieństwie do zwykłych użytkowników, w tym ostatnim przypadku programiści są o tyle uprzywilejowani, że jeśli jakiś program nie istnieje a mimo to oni go bardzo ale to bardzo potrzebują, zawsze mogą napisać taki program dla siebie. Co prawda, nie zawsze jest to możliwe (np. nikt nie będzie pisał własnej przeglądarki internetowej tylko dlatego że np. FF wolno się ładuje), ale mniejsze programy użytkowe, automatyzujące żmudne czynności - to już tak.

I właśnie o tym chciałbym podyskutować - na tym forum pisze raczej duża ilość koderów ;-) z pewnością niektórzy napisali już w swoim życiu jakiś program ułatwiający codzienne korzystanie z komputera lub programowanie - IMHO byłoby fajnie gdybyśmy wszyscy opowiedzieli o nich/załączylli źródła/screeny/exeka, w ten sposób każdy ciekawy pomysł mógłby zostać upubliczniony, ułatwiając życie nam wszystkim.


----------

Pozwolicie że ja zacznę? - mam kilka programów do opisania, ale nie będę ich wrzucał wszystkich od razu.

Pierwszy program to... kalkulator. Ale nie taki zwykły kalkulator, taki jak ten windowsowy - mój przypomina trochę sposób działania kompilatora. Wygląda to w ten sposób, że po otwarciu programu pokazuje się konsola, gdzie wpisujesz działania: np. 2 + 2, wciskasz enter i w następnej linii wyskakuje wynik. Obsługiwane operacje to +, -, *, /, ^, % oraz nawiasy do wymuszania kolejności działań. Można używać białych spacji i dowolnie formatować wyrażenia. Program działa na doublach. Domyślnie zdefiniowane są stałe pi oraz e. Po wpisaniu cls, ekran zostaje wyczyszczony. Wyjście, to wpisanie exit. Program można również wywołać z linii poleceń przesyłając wyrażenie do obliczenia. IMHO fajną sprawą jest możliwość definiowania zmiennych, czyli np. można wpisać coś takiego:

Kod: 

a = 5 * (6 - 2^3)
b = a * a * a
wynik = (a + b) / 3


Program napisałem na podstawie kodu źródłowego Bjarnego Stroustrupa z książki Język C++. Kod źródłowy + exek jest do ściągnięcia tutaj: http://student.agh.edu.pl/~koshmaar/Projects/Kalkulator.zip. Wykorzystuję go raz na jakiś czas, do przeprowadzania skomplikowanych rachunków na dużych liczbach itp. Program jest bardzo prosty i krótki, więc bez problemu można dodawać do niego nowe możliwości, rozszerzać funkcjonalność itp. Niniejszym udostępniam go na licencji public domain :-)

------------

Zapraszam do opisywania swoich produkcji! Pamiętajcie, to nie muszą być jakieś super duper dużę wyszykowane programy/edytory z ukończonymi wszystkimi opcjami, ważne jest tylko aby były praktyczne, aby pomagały koderowi w życiu.


Btw, szkoda że nie można załączać zipów.
Queight
Dec 25, 2005

Odp: Programy ułatwiające życie

Nie wiem czy pod windows jest ale pod lin'a jest Qalc i graficzna nakladka Qalculate ktore ma te mozliwosci co ty zrobiles i nawet znacznie wieksze, jest tez mozliwosc dzialania w konsoli :)

Ja osobiscie jakos nie pisalem wlasnych programikow ulatwiajacych zycie :)
agent_J
Dec 25, 2005

Odp: Programy ułatwiające życie

Magia skryptów shella i narzędzi UNIXowych :)

bc - fajny kalkulator, działa w konsoli, można chyba przekierować strumień, żeby policzył
perl - osobiście nie lubię tego języka ale ma duuużą bibliotekę na www.cpan.org
Krzysiek K.
Dec 22, 2005

Odp: Programy ułatwiające życie

EvalDraw - "kalkulator" napisany przez Kena Silvermana. Ma wbudowany kompilator języka podobnego do C i kompilowanego "w tle". Potrafi rysować wykresy funkcji jednowymiarowych, dwuwymiarowych i trójwymiarowych (jako woksele) z dodatkową możliwością ich animacji. Ponadto, można pisać w tym proste programy i pewnie robić jeszcze jakieś dziwne rzeczy. :)

Na stronie Kena jest także dostępna biblioteka z tym kompilatorem (podajesz tekst funkcji, dostajesz wskaźnik na funkcję), jeśli by ktoś chciał wbudować to w jakiś swój program. :)
Koshmaar
Dec 24, 2005

Odp: Programy ułatwiające życie

Hej, chyba się nie zrozumieliśmy - tu wcale nie chodziło o zrobienie linkowiska do wszystkich kalkulatorów w necie ;-) Rozumiem że chcieliście mi pokazać że niepotrzebnie wyważałem otwarte drzwi, że istnieje wiele innych o wiele lepszych kalkulatorów które tylko czekają aby zostać ściągnięte, ale nie taka była idea tego topiku! :-)

No więc spróbuję jeszcze raz...

------------

LineCounter - program do liczenia ilości linii kodu w plikach .h, .c, .hpp i .cpp (ale dodanie nowych rozszerzeń jest tak banalne jak dodanie wartości w tablicy). Po wywołaniu bez żadnych argumentów, liczy statsy dla plików znajdujących się w aktualnym katalogu. Po dodaniu opcji -r, szuka rekurencyjnie w podkatalogach. Można również podać jako pierwszy argument katalog w którym ma się zaczynać szukanie. Program napisałem w całości w czystym C, przez co wygląda dosyć pokracznie :-) ale uczyłem się na kolosa z czystego C więc mam nadzieję że zrozumiecie. Można go ściągnąć tutaj (ponownie, exek i źródła) http://student.agh.edu.pl/~koshmaar/Projects/LineCounter.zip , ponownie udostępniam go na zasadzie public domain.

Przykładowy output:

Cytat:

Files with *.hpp extension found in E:\boost\boost\algorithm:

- minmax.hpp [48]
- minmax_element.hpp [552]
- string.hpp [30]
- string_regex.hpp [23]

-------- STATISTICS ---------

653 lines of code has been found in 4 files collected from 0 directories.

Files with those extensions have been examined:

- *.h
- *.hpp
- *.c
- *.cpp


-----------------

List of all files, sorted by number of lines in descending order:

1: minmax_element.hpp [552]
2: minmax.hpp [48]
3: string.hpp [30]
4: string_regex.hpp [23]

-----------------



Btw, zapuściłem go rekurencyjnie w głównym katalogu boosta i po 0,5 sek otrzymałem:

79760 lines of code has been found in 3219 files collected from 248 directories.

Tak więc jest raczej szybki :-)

--------------

No dobra, może teraz ktoś inny pochwali się jakimś takim programikiem który sam napisał? Oczywiście nie musi to być kolejny kalkulator czy licznik linii, o nie.


nadult
Dec 25, 2005

Odp: Programy ułatwiające życie

Każdy kto próbował coś sobie wyeksportować z gmaxa wie, że Max-script został okrojony z funkcji do zapisu na dysk. Trzeba było to jakoś obejść: np. zapisując dane do logów, a później logi sobie skopiować i wkleić do pliku. Niestety naraz można skopiować zaledwie 10kB tekstu (nie mówiąc już o tym, że metoda jest dość toporna :)). Więc napisałem sobie taki programik (już o nim kiedyś pisałem na warsztacie):
gmaxwrapper: http://nadult.ilo.pl/download.php?f=stuff/gmwrap.zip

Zasada działania jest prosta:
Znajdź okno loggera w gmaxie, skopiuj tekst, wstępnie przeparsuj i zapisz na dysk.

Program zapisuje dane znajdujące się pomiędzy tokenami: @START nazwa_pliku@ i @END@
Dzięki temu jeśli np. na scenie jest kilka modeli to każdy z nich można zapisać do oddzielnego pliku.
Krzysiek K.
Dec 24, 2005

Odp: Programy ułatwiające życie

Cytat:
tu wcale nie chodziło o zrobienie linkowiska do wszystkich kalkulatorów w necie ;-)

Wiem, chodziło o przydatne narzędzia, dlatego dałem link do EvalDraw, który potrafi sporo więcej niż kalkulator. Jeżeli chodzi o proste obliczenia, to zazwyczaj używam do tego zwykłego kalkulatora. :)

Cytat:
Program zapisuje dane znajdujące się pomiędzy tokenami: @START nazwa_pliku@ i @END@
Dzięki temu jeśli np. na scenie jest kilka modeli to każdy z nich można zapisać do oddzielnego pliku.

Już wcześniej podawałeś do tego linka i bardzo mi się przydało Proponuję tylko zrobić wersję, która nie wymaga oznaczeń START i END do działania i po prostu zrzuca zawartość listenera do pliku (np. o nazwie podanej jako parametr programu). W ten sposób można wykorzystać ten program z gotowymi skryptami dostępnymi na sieci (np. eksport do MD5). Oczywiście dysponując źródłem łatwo zrobić taką poprawkę samemu (np. ja musiałem), ale taki sposób działania, moim zdaniem, ma szersze zastosowanie (nie każdy pisze skrypty do eksportu, zwłaszcza do pokręconych formatów, jak MD5). :)
bies
Dec 24, 2005

Odp: Programy ułatwiające życie

Koshmaar: BPANMSP :D
Kod: # find src/cpp/slrn-0.9.8.1pl1/src -regextype posix-egrep -regex '.*\.(h|c)' | xargs wc -l | sort -b -n
      5 src/cpp/slrn-0.9.8.1pl1/src/clientlib.c
      5 src/cpp/slrn-0.9.8.1pl1/src/clientlib.h
     23 src/cpp/slrn-0.9.8.1pl1/src/decode.h
     24 src/cpp/slrn-0.9.8.1pl1/src/hash.h
     24 src/cpp/slrn-0.9.8.1pl1/src/interp.h
     28 src/cpp/slrn-0.9.8.1pl1/src/help.h
     31 src/cpp/slrn-0.9.8.1pl1/src/vfile.h
     32 src/cpp/slrn-0.9.8.1pl1/src/vms.h
...
   1929 src/cpp/slrn-0.9.8.1pl1/src/spool.c
   3218 src/cpp/slrn-0.9.8.1pl1/src/group.c
   3251 src/cpp/slrn-0.9.8.1pl1/src/misc.c
   3447 src/cpp/slrn-0.9.8.1pl1/src/slrnpull.c
   9229 src/cpp/slrn-0.9.8.1pl1/src/art.c
  51063 total

zobacz sobie http://gnuwin32.sourceforge.net/ i podobne. Tego typu narzędzia składa się ogólnie dostępnych klocków.
Koshmaar
Dec 27, 2005

Odp: Programy ułatwiające życie

Nadult: thx, widać że zrozumiałeś ideę.

Bies: wrrr, widać że idei nie zrozumiałeś :D albo raczej celowo to napisałeś aby udowodnić że wymyślam koło od początku. W poprzednich przypadkach tak faktycznie jest, ja się wcale tego nie wypieram i jestem tego 100% świadomy... jednak następny programik który mam zamiar zamieścić, powinien już być nieco trudniejszy do zbudowania z ogólnie dostępnych klocków.


No dobra, who's next? Czy tylko ja będę spamował w tym topiku? ;-)


EDIT: aaa właśnie, co znaczy to BPANMSP? Google define +/- ani Wikipedie nic nie powiedziały.

bies
Dec 24, 2005

Odp: Programy ułatwiające życie

BPANMSP = Bardzo przepraszam ale nie mogłem się powstrzymać. :D Istnieje w wielu wariantach np: BP, NNMSP - ,,Bardzo przepraszam, naprawdę nie mogłem się powstrzymać'' itd.
Regedit
Dec 26, 2005

Odp: Programy ułatwiające życie

Jeśli chodzi o kalkulator, to z powodzeniem może go zastąpić interaktywny interpreter (wiersz poleceń) Pythona czy innego języka skryptowego - ma wbudowane operacje logiczne i bitowe, konwersje na system dziesiętny, funkcje trygonometryczne i dużo więcej. Mnie natomiast do szczęścia prawie zawsze wystarcza standardowy kalkulator Windows.

Czego mi brakuje? Być może programu do sumowania ilości linii kodu źródłowego w projekcie. Ale takich programów jest masa i samemu taki napisać to też nie problem. Po prostu jak na razie obywam się bez niego :)

Natomiast czego brakuje mi najbardziej, to porządnego edytora tekstu nieformatowanego. To bardzo charakterystyczny problem i dziwię się, że tak mało osób go dostrzega. To nie jest bezpośrednio związane z programowaniem, ale raczej z tworzeniem stron WWW. Chodzi o jakiś taki edytor, który potrafiłby to wszystko co każdy szanujący się (jak kolorowanie składni różnych języków, automatyczne wcięcia, zaznaczanie prostokątnych bloków itd.), ale przede wszystkim potrafiłby obsługiwać (bez instalowania specjalnej czcionki czy układu klawiatury) różne kodowania polskich znaków (Windows-1250, UTF-8, UTF-16 oraz obowiązkowo ISO-8859-2) i końców wiesza (CR, LF, CR+LF) i pozwalał zapmiętywać to dla danego dokumentu.

To jest problem typowo polski (inna czcionka i kody wpisywanych znaków, a inne kody znaków zapisywanych do pliku, wiele stron kodowych dla jednego języka) i żaden zachodni edytor (z wyjątkiem chyba Visual Studio) nie potrafi go rozwiązać a jedynym edytorem polskim, jaki to rozwiązuje jest Pajączek (który jest niestety płatny). Trzeba przyznać, że pod tym względem Windows kuleje, bo takie możliwości ma wiele edytorów pod Linuksa, jak choćby gedit - standardowy edytor tekstu w Gnome. Może trzebaby się wziąć i (choćby korzystając z gotowej kontrolki jak Scintilla) napisać w końcu coś takiego?
migajek
Dec 26, 2005

Odp: Programy ułatwiające życie

Cytat:
a jedynym edytorem polskim, jaki to rozwiązuje jest Pajączek (który jest niestety płatny).

wszedles mi na ambicje :> postaram sie do nastepnej wersji HateML dodac UTF-16 i konwertowanie sposobu lamania lini ... reszta juz jest :P
bies
Dec 27, 2005

Odp: Programy ułatwiające życie

Regedit: GVim lub vim na unikodowym terminalu jest takim edytorem.
Gorion
Dec 30, 2005

Odp: Programy ułatwiające życie

Regedit:
Notatnik SP, niestety oficjalnej strony nie mogę teraz znaleźć, ale zassać go można stąd http://amnezja.org//modules.php?name=News&file=article&sid=109
Majtek
Dec 29, 2005

Odp: Programy ułatwiające życie

Regedit: notatnik co się zwie
Notepad++
nie jest to rewelacja ale mi starcza
strona projektu: http://notepad-plus.sourceforge.net
artpoz
Jan 4, 2006

Odp: Programy ułatwiające życie

Kiedyś w czasach DOS'u nie było jeszcze pulpitów ze skrótami do ulubionych gier więc napisałem w Pascalu program, który zapamiętywał bieżącą ścieżkę w pliku i potem przechodził do zapamietanego katalogu. Był to mój pierwszy program z parametrami podawanymi w linii poleceń. Pamiętam, że miał trzy możliwe parametry:
kat z  - zapisywał ścieżkę do pliku
kat o  - odczytywał ścieżkę z pliku (przechodził do niej)
kat w - wyświetlał zapisaną ścieżkę

Byłem z niego naprawdę dumny :)
Strony:
1 2