Pokazywanie postów oznaczonych etykietą varia. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą varia. Pokaż wszystkie posty

sobota, 8 listopada 2014

Pożyteczne narzędzia - graphviz

Przez przypadek właściwie, szukając jakiegoś przyjemnego rozwiązania na wypisywanie drzew BST znalazłem wzmiankę o pakiecie graphviz, który tworzy piękne obrazki z plików tekstowych zawierających ich opis w pewnym składniowo podobnym do C metajęzyku.

Narzędzie to może być bardzo użyteczne przy wizualizacji wszelkich grafów, workflow programów albo innych śmiesznych zastosowań, na które jeszcze nie wpadłem. Ogółem bardzo mi się podoba w zamyśle. Świetna rzecz do ilustracji tego jak działają struktury wskaźnikowe (listy czy jakieś tablice mieszające) więc może się przydać do prezentacji jako graficzny dodatek do tekstu złożonego w TeX'u.

Z czym to się je?

W Debianie wystarczy sobie wpisać:

#aptitude install graphviz

I wszystko powinno pięknie się zainstalować. Paczka składa się z wielu programów dla mnie na razie najważniejszy wydaje się dot służący do robienia grafów skierowanych (btw podoba mi się modularność tego pakietu, dzięki temu mamy ułatwione zadanie czytając manuala do tych mniejszych jego części).

 
 Z poniższego kodu, który umieścimy sobie w jakimś pliku np. graph.gv
digraph G{
       node [shape=record, height=.1]
       56->44;
       56->70;
       44->35;
       70->69;
       70->80;
       35->23;
}
Możemy po użyciu następującej komendy terminalowej :
$dot -Tgif graph.gv -o graph.gif
Stworzyć sobie taki oto obrazek z drzewem BST.



Oczywiście można tworzy daleko bardziej rozbudowane opisy, które będą powalać swoją dokładnością. W moim wypadku było jednak potrzebne proste wypisywanie drzewa, które zaszyłem sobie w programie w taki sposób, że po przetworzeniu przez dot'a dostaję fajną graficzną reprezentację.

Further reading:

http://www.graphviz.org/pdf/dotguide.pdf

środa, 20 sierpnia 2014

Pożyteczne narzędzia - youtube-dl

Natknąłem się na ciekawy programik terminalowy - mianowicie youtube-dl. Pewno dla większości już sama nazwa powie dużo o jego możliwościach - tak służy do pobierania z różnych serwisów streamujących wideo filmików.

Po więcej info zachęcam do przejrzenia man'a dla tego programu, ale mogę wyszczególnić jedną fajną funkcję - zgrywanie samego audio.

Przewrotnie etykietuje jako linux, ale jest to projekt crossplatformowy, więc jak ktoś ma OSX czy Windows'a to sobie może wersję dla swojego systemu również znaleźć (jednak już chyba tylko na githubie projektu).

Instalacja na debianie w gałęzi sid jest banalnie prosta wystarczy :

#aptitude install youtube-dl
(instalacja w stable wymaga ściągnięcia skryptu ze strony twórców)
$sudo wget https://yt-dl.org/downloads/2014.09.04.1/youtube-dl -O /usr/local/bin/youtube-dl
$sudo chmod a+x /usr/local/bin/youtube-dl

I menadżer już sam za nas załatwi sprawę z zależnościami :) 
[Przekonany jestem, że w systemach Fedoro-pochodnych pewnie też się da do niego dokopać yum 'em czy co tam jest :)]
Istnieje oczywiście możliwość ściągnięcia sobie kodu i skompilowania własnej binarki. Wszytko na stronie projektu.

No i cóż, po instalacji polecam przetestować! Naprawdę świetna rzecz, szczególnie jak mamy laptopa, czas i zero sieci w okolicy, a YouTube to nie tylko koty i kompilacje wypadków. (Polecam kanał MITOpenCourseware).


Jak się to je w skrócie?

Powiedzmy, że nas zaintrygował ten film :
 

Wystarczy, że wklepiemy sobie taki kod w konsolę: 


$youtube-dl https://www.youtube.com/watch?v=0M_kIqhwbFo -o "/folder/docelowy/%(title)s"

Co nam to zrobi? Ściągnie plik do katalogu /folder/docelowy/ i nazwie go tak jak nazywa się filmik na YouTube.
Prawda, że przyjemne? ;) 

piątek, 18 lipca 2014

Studia na Uniwersytecie Jagiellońskim. Rok I

Mamy teraz lipiec. Zanosiłem się z napisaniem tego postu od bardzo dawna, chyba od grudnia. Przeżyłem jedną sesję zimową, a teraz jeszcze walczę w sesji letniej, więc myślę, że mam już całkiem niezły ogląd sytuacji.

W zamyśle chciałem napisać coś takiego, jeszcze przed pierwszą sesją :

Od października mam to szczęście,  że mogę studiować na najstarszej uczelni w naszym kraju. Dodatkowo, mogę studiować kierunek, który nie tylko jest niezwykle rozwijający, ale również, jak się zdaje, przyczyni się do tego, że będę mógł znaleźć pracę w zawodzie po studiach. A mianowicie informatykę.
Nie będę wchodził w spór na temat wyższości nauk humanistycznych nad ścisłymi, tudzież the other way around. Niemniej muszę przyznać, że jeszcze nigdy w życiu nie czułem się tak zadowolony z tego, co robię na co dzień.
 (dopisek lipcowy: a miałem to nieszczęście, z perspektywy czasu, że w liceum byłem na profilu humanistycznym)
Jeśli ktoś zastanawia się nad studiowaniem na Wydziale Matematyki i Informatyki, to mogę powiedzieć mu tylko jedno - zastanów się, czy jesteś w stanie się w pełni poświęcić nauce matematyki (bo to jest generalnie problemem)
 (dopisek lipcowy: przynajmniej na pierwszym semestrze, gdzie trzeba się przyzwyczaić do tego, że studia działają w zupełnie innym trybie niż to do czego przyzwyczaiło nas liceum, ale to samo piszę poniżej)
, jeśli masz jakieś braki, bo bez zaangażowania lepiej nie próbuj. Nie chcę tu nikogo zniechęcać, chcę tylko uprzedzić, że na tym wydziale ciężko jest "studiować", naprawdę trzeba się tu uczyć. Należy zapomnieć o wszelkich przyzwyczajeniach z liceum i podejścia, że jakoś to będzie - bez pracy nie będzie się miało nawet głupiej trói.
Tyle na temat studiów. Sesja się zbliża - trzeba się dobrze przygotować.

No i co mogę dodać po ( na razie ) prawie zaliczeniu pierwszego roku?
Po pierwsze, nie ma się co bać kampanii wrześniowej, jeśli jest się na tyle ogarniętym, żeby zostawić sobie na nią jeden przedmiot, a nie po prostu nie uczyć się na pierwsze terminy z innych rzeczy. No, ale to jest tylko gwoli tego jak studiowanie przebiega w ogóle. Przejdzmy do meritum - Uniwersytetu Jagiellońskiego.

Mój wydział znajduje się w dość ustronnej części Krakowa - mianowicie na Ruczaju, dla części osób to może być mało dobra wiadomość, jeśli się teraz tego dowiadują, a liczyli na to, że będą mogli wynająć coś w centrum i mieć blisko do barów i na uczelnie, dla mnie osobiście jest to na plus, ponieważ dzięki temu ( jak mi się wydaje ), przynajmniej po części, większość zajęć odbywa się w jednym budynku, więc przerwy między laborkami można przeznaczyć na dowolne czynności różne od dojazdów (+). Dodatkowo, jak jest ciepło to można wyjść na zewnątrz, na przykład na dziedziniec (++, dwa bo jeszcze wtedy łapie wifi UJotowe) albo obok budynku na łąkę i sobie spokojnie w cieniu poleniuchować, względnie pouczyć.

Co do kadry i wyposażenia.
Jeśli mówią wam, że będziecie się uczyć programować na kartkach i dostaniecie dużo matmy, której w życiu nie wykorzystacie, no to nie wiem, kto wam takich kitów nawciskał.

Nie wiem, być może jestem aż takim szczęściarzem, ale dostałem samych prowadzących, do których nie mogę się przyczepić. Zawsze byli gotowi do pomocy przy różnych zagadnieniach, w każdym razie nie mogli się czegoś nauczyć za mnie, więc z problemami trzeba było czasem po prostu posiedzieć nie koniecznie polegać na tym, że ktoś to umie, gotowe rozwiązania nie zawsze dają dobre skutki jak chodzi o rozwijanie umiejętności.

Na kartkach owszem programuje się, ale to tylko wtedy jak jest na przykład kartkówka, czy jakaś inna forma sprawdzania wiedzy, gdzie z oczywistych względów nie bardzo można używać komputerów (chociaż słyszałem, że niektórzy prowadzący korzystają z jakichś aplikacji webowych. Też się da jak się chce). Ewentualnie, wtedy gdy jest to przedmiot ściśle algorytmiczny, a przez to nie trzeba bezmyślnie pisać kodu i go kompilować,żeby pokazać, że działa, tylko pracować głową nad rozwiązaniem !

Co do wyposażenia, to wydział zaopatrzony jest świetnie, jest przestronny, więc jak ktoś chce to może bez problemu korzystać ze sprzętu (rzutniki etc), sal, a przede wszystkim świetnie zaopatrzonej biblioteki.
Sale komputerowe, których jest naprawdę multum są dobrze wyposażone, niemniej, osobiście korzystam z własnego laptopa na zajęciach, bo mam tam wszystko skonfigurowane "pod siebie" z ulubionym edytorem tekstu (vim), czy środowiskiem graficznym (fluxbox) na czele ;)

Wróćmy jeszcze może do matematyki. Jeśli ktoś chce być na prawdę dobrze zarabiającym programistą (ergo dobrym algorytmikiem, no to siłą rzeczy powinien mieć dobre zrozumienie matematyki z prostego względu - matematyka daje masę świetnych narzędzi do wykorzystania w pracy, bądź co bądź również związanej z budową abstrakcji, bo przecież matematyka jest właśnie jej źródłem.

 Jeśli to nie trafia, to może zastanówmy się nad poszczególnymi przedmiotami:
  • Logika/Wstęp do Teorii Mnogości - w zasadzie logiczne podstawy matematyki, no a kim jest informatyk, jeśli nie współczesnym logikiem? Przedmiot dość problematyczny, bo wprowadza bardzo dużo formalnych definicji jak i dowodów, które mogą być nieco nieoczywiste na pierwszy rzut oka, niemniej nie ma się co zrażać, trzeba się po prostu przyłożyć.
  • Algebra liniowa z geometrią analityczną - jak dla mnie no to też jest po prostu mus, bez dobrej orientacji w przestrzeniach liniowych ciężko będzie zrozumieć biblioteki do animacji 3D, no nie? No, a jeśli nie interesuje Cię pisanie gier, to zawsze może zainteresować sztuczna inteligencja albo dokładniej nauczanie maszynowe - SVM - polecam wyszukać w sieci ;)
  • Analiza matematyczna - teoria złożoności obliczeniowej,metody numeryczne, chociażby; w każdym razie bardzo przydatny aparat matematyczny. Kiedyś mi taka analogia budowlano-remontowa wpadła do głowy - nie na co dzień będziesz korzystać z wiertarki prawda? No, ale jak już będziesz potrzebować kiedyś coś przewiercić, to mimo wszystko wypadałoby by mieć wiertarkę na stanie. Podobnie IMO jest z analizą matematyczną, nie koniecznie będziesz codziennie liczyć całki czy pochodne, jednak zawsze może się okazać, że taki dzień nastąpi.
  • W moim wypadku przewinęło się też troszkę algebry abstrakcyjnej, no i tutaj chyba nie muszę mówić o oczywistym jej zastosowaniu w kryptografii, weźmy na przykład algorytm RSA, do szyfrowania asymetrycznego, podstawy matematyczne sięgają bezpośrednio do teorii grup, a podstawą jego bezpieczeństwa jest to, że bardzo trudno przeprowadzić faktoryzację liczb złożonych z długich liczb pierwszych.
Matematyka, bądź co bądź, dała początek informatyce jako osobnej dziedzinie, była to podstawa teoretyczna. Sama zresztą nazwa pochodzi od informacji oraz automatyki, gdzie niemal każdą informację można wyrazić w naturalnym niemal języku liczb i matematyki właśnie.

Post wyszedł nieco długawy. W zasadzie adresujący najbardziej same sprawy związane z przebiegiem na dowolnej uczelni, niekoniecznie na UJ. Co do najstarszego uniwersytetu w Polsce, to mogę powiedzieć, że polecam Wydział Matematyki i Informatyki jako miejsce do studiowania, nie spotkałem się z tym, żeby utrudniano tam zdobywanie wiedzy, wprost przeciwnie, oczywiście, tylko wtedy, gdy faktycznie ma się do tego chęci.

wtorek, 4 czerwca 2013

abyssmal atrophy

Mamy naprawdę szeroki wybór.
Są blogi o polityce, gdzie zawsze można dowiedzieć się cóż to, według uznanego autora,  dajmy na to dziennikarza, wydarzyło się ostatnio na tzw. "scenie politycznej". Dlaczego, po co, kto i z kim, a przede wszystkim za ile.

Są też powstające jak grzyby po deszczu blogi o modzie, gdzie każdy może sobie znaleźć jakiś miły dla oka "outfit", polecony oczywiście przez znaną "fashonistkę". Nic tylko wstać zza biurka, wyłączyć komputer i udać się do najbliższego H&M, Zary, czy co tam jeszcze jest i wydawać pieniądze. No chyba, że jest się hipsterem -- wtedy jest jeszcze opcja udania się do rozpropagowanego przez Maclemore thrift shop'u, czyli na łowy do swojskiego lumpeksu.

Inną kategorię stanowią blogi z przepisami kulinarnymi, ciekawostkami jednak użytecznymi. Szczególnie, gdy nie ma się nikogo, kto mógłby coś pod gębę podstawić. Wtedy akurat zamiast jeść gdzieś poza domem warto się takiemu blogowi przyjrzeć, a nóż uda się kupić jakiś ze składników w warzywniaku po drugiej stronie ulicy i już można w miarę tanio coś zjeść. Nie zupka z proszku, więc na pewno zdrowsze, co do smaku, to o niebo lepsze. Bez dwóch zdań.

No, a ten blog...?

Pytanie to przynajmniej na razie zostawiam bez odpowiedzi. Czas pokaże.