Adam Boduch
2013-10-06 18:25
  • Możliwość oddawania głosów na posty w przyklejonych wątkach
  • Możliwość filtrowania po rozwiązanych wątkach oraz po dacie napisania ostatniego posta
  • Forum: powiadomienia od użytkownika anonimowego mogą zawierać jego login
  • Dodano nowe powiadomienie, o tym, że ktoś pozytywnie ocenił mój post
  • Powiadomienie użytkownika w momencie, gdy wątek który obserwował, został usunięty
  • Poprawiony błąd wklejania tekstu ze schowka na forum (tylko FF)

#coyote

Adam Boduch

@madmike: Ok, bede tak robil :) Poki co tez na fb wrzucam :)

Demonical Monk

@Adam Boduch: Tym razem się nie wpiszę w sprawie żadnych zmian, ja dla odmiany piszę coś dużego do podniesienia bezpieczeństwa ;)

Endrju
2013-10-06 14:30

Wczoraj na forum znów pojawiła się superoptymalizacja z przesuwaniem w prawo. Wszyscy wiemy, że value / 2 oraz value >> 1 to dla typów całkowitoliczbowych bez znaku to samo. Każdy normalny kompilator nie wykorzysta w takiej operacji kosztownego dzielenia, tylko zamieni je na przesunięcie bitowe. (Pewnie są takie, które tego nie zrobią, ale w końcu są też ludzie, którzy używają IE 6 - kogo to obchodzi w 2013 roku)

Jeżeli między tymi zapisami nie ma różnicy, to który stosować? Oczywiście oba. Bo jest różnica - semantyczna. Komputer nie wie co oznaczają nasze zmienne, to tylko ciągi zer i jedynek. Programista jednak ma taką wiedzę i powinien ją wykorzystać, żeby kod był maksymalnie czytelny.

I tak: Jeżeli zmienna przechowuje liczbę zawsze powinno się używać dzielenia - przecież przy obliczaniu pola trójkąta nie przesuwamy bitowo wysokości w lewo, tylko dzielimy ją przez dwa. Jeżeli zapisujemy dane do rejestru licznika, to niczego nie dzielimy bo to nie są dla nas liczby - wartości binarne przesuwamy i maskujemy.

Warto dodać, że dla liczb ze znakiem nie ma nawet nad czym się zastanawiać - zawsze należy używać dzielenia.

Ola Nordmann

@Endrju: Chciałbym jeszcze dodać, że przy liczbach zmiennej precyzji też nie może być mowy o przesunięciach bitowych.
I notka dla wtajemniczonych - rotacje bitowe pozwalają na szybkie dzielenie/mnożenie przez kolejne potęgi dwójki LICZB CAŁKOWITYCH DODATNICH + 0 (czyli unsigned).

Azarien

@Endrju: kogo obchodzi IE6? powinno obchodzić autorów stron z innymi przeglądarkami. zainstalujesz XP, masz tylko IE6. obecnie nie da się prawidłowo wejść i ściągnąć ani IE8 ani Firefoksa, mając tylko IE6. Chrome się udało.

SpreadIT
2013-10-06 13:37

Kolejne tematy prelekcji na konferencji SpreadIT ujawnione!
Oto i one:

  • “Scalable web apps: execution time vs development time” – Piotr Pelczar
  • “Test Driven Development - Iteracje^2” – Szymon Homa
  • “Od HyperText do HyperData, czyli client-side MVC” – Paweł Trojanek

Zapraszamy wszystkich chętnych oraz wszystkich neizdecydowanych :)

Demonical Monk
2013-10-06 13:14

Marzec 2013. Oles z #OVH wyśmiewa konkurencję:
http://imgur.com/mNLrxQn

#fail #epicfail #hosting

Koziołek

@Demonical Monk: Ojtam, ojtam... swoją drogą jest to kolejny dowód na to, że w szeroko pojętym IT nie należy nikogo krytykować za model biznesowy, bo można się samemu na to nadziać.

Demonical Monk
2013-10-06 13:08

Niedawno zasłyszany suchar. Jedzie webmaster pociągiem i cały czas słyszy:

--- END SUCHAR ---

#webdesigner #suchar

AlfaLeporis

@Demonical Monk: Ten dowcip leży już tutaj ponad dwa dni i za każdym razem jak wejdę na 4programmers to mi się coś w żołądku już dzieje :) Kiedy to to poleci w dół?

Demonical Monk

@AlfaLeporis: Jak zbierzesz ekipę do plusowania innych rzeczy w zakładce "Mikroblog", działaj ;)

Artur Protasewicz
2013-10-06 09:51

Słownik "Bułka z masłem": A4, Word, Times New Roman 12, marginesy normalne

Krótkie uzupełnienie do artykułu:
Regułowy System ekspercki / Rule-driven expert system

"Na początku było słowo," (Jan 1,1) – tego nigdy nie zrozumiem. Ludzki mózg, to nieodgadniona tajemnica, a mózg programisty jest po prostu arcydziełem (pytanie czyim: Boga, czy ewolucji, czy tajemniczego sprawcy z kosmosu?) Oto, jak trudno jest powiedzieć słowami to, co mózg programisty rozumie po jednym spojrzeniu na kod. Sam nie wiem, ile jest moich błędów w słowniku "Bułka z masłem" poniżej. Tym bardziej nie rozumiem, że "Na początku było słowo,"(?)

/*Zwróć fragment wniosku w formie słownej znajdujący się w pewnej kolumnie i pewnym wierszu tabeli z regułami wnioskującymi.*/
String Conclusions(int Column, int Row) 
      return (String)grdConclusions[Column, Row].Value;

/*Jeśli operator o numerze Index znajdujący się w kolumnie RelacjaAB (inaczej w kolumnie operatora pomiędzy faktem A i faktem B) jest ORAZ ("I", "and"), do części ścieżki lub bieżącej ścieżki uzasadnienia "dlaczego?" dla relacji Fakt A ORAZ Fakt B dodaj tekst złożony z nazwy faktu A i nazwy faktu B połączonych iloczynem logicznym, ujęty w nawiasy okrągłe.*/
if (Conclusions(abRelationCol, ConclusionIndex) == "and")
      sFact += "(" + FactA + " and " + FactB + ")";

/*Jeżeli rezultat warunku logicznego jest true (prawda), do ścieżki uzasadnienia "dlaczego?" dodaj zdanie twierdzące, że wniosek zachodzi (is true = jest prawdą) i zmniejsz wcięcie oraz zwróć potwierdzenie prawdziwości wniosku.*/
if (result) { WhyPath("conclusion " + Conclusion + " is true"); Nested--; return true; }

/*Czy zachodzi fakt A dla wniosku o indeksie Index dla kandydata Candidate na męża dla Alicji?*/
IsFactA(int ConclusionIndex, String Candidate)

/*Jeżeli i-ty fakt w kolumnie "Obiekt" tabeli fakty to imię kandydata na męża dla Alicji i kandydat ma cechę nazwaną tekstem FaktA, do ścieżki uzasadnienia "dlaczego?" dodaj zdanie twierdzące, że FaktA zachodzi (is true = jest prawdą) dla danego kandydata i zmniejsz wcięcie oraz zwróć potwierdzenie tego, że zachodzi faktA dla kandydata Candidate.*/
if (Facts(objectCol, iFact) == Candidate && Facts(attributeCol, iFact) == FactA) {
      WhyPath("fact " + FactA + " is true for " + Candidate); Nested--; return true;
}

/*Dla każdej osoby spośród kandydatów na męża dla Alicji, jeżeli równocześnie prawdziwy jest wniosek mówiący, że Alicja może poślubić daną osobę i fałszywy jest wniosek mówiący, że Alicja nie może poślubić danej osoby, do zbioru osób, które może poślubić Alicja dodaj kandydata.*/
foreach (String Person in Persons) { 
      if (Is("can marry", Person) && !Is("cannot marry", Person)) result.Add(Person);
}
aurel

@Artur Protasewicz: Ale czym właściwie jest "słowo"? Za wiki: "zespół dźwięków mowy ludzkiej będący symbolicznym oznaczeniem jakiegoś pojęcia". Znaczy to IMHO mniej więcej tyle, że stworzenie nie było przypadkowe, lecz właśnie na początku było słowo (znaczenie, pojęcie, wyraz woli Boga), a dopiero na jego podstawie - stworzenie. Nie na odwrót ;)
A to wszystko tylko pod warunkiem, że przejdziemy ponad interpretację oczywistą - słowo jest synonimem Jezusa ;) (co wynika z dalszej części tekstu: "Słowo stało się ciałem i zamieszkało wśród nas. Oglądaliśmy Jego chwałę, którą jako Jednonarodzony, pełen łaski i prawdy, ma od Ojca.")

Artur Protasewicz
2013-10-05 18:33

"Co się nie da, jak się da?" – eksperyment z dwujęzycznym artykułem polsko-angielskim…

Eksperyment...?

Raczej upór i motywacja.

Czym jest upór? Myślę, że reakcją obronną. Nie możesz sobie poradzić albo coś bardzo chcesz mieć i próbujesz mniej lub bardziej emocjonalnie postawić na swoim. Ale osiągnięcie celu okazuje coraz trudniejsze, im bliżej tego celu jesteś, bo już zaczyna brakować sił.

I wtedy z pomocą może przyjść motywacja. Ktoś ci poda rękę. Nie zawsze czyjaś motywacja jest zamierzona w stosunku do ciebie. To raczej tylko kwestia twojej interpretacji zamierzeń tej drugiej osoby. W Polsce tak za bardzo nie ma dobrego obyczaju powiedzenia "dobra robota, dzięki". Spotkałem to w jednej zachodniej korporacji i zresztą paru moich znajomych też, mówiąc ogólnie na Zachodzie.

Miałem opory z używaniem dwujęzycznych tekstów w artykułach na 4programmers.net, bo tu wszystko, oprócz kodu programów, a nawet czasem kod jest po polsku. Bałem się, że naruszę typowo polski charakter portalu. Ale z drugiej strony pojawiała się pokusa, bo kiedyś miałem własną stronę i tak była prowadzona, co mi się bardzo podobało. Można by jednak rzec trochę szerzej. Przecież cały świat programistów porozumiewa się po angielsku. Ucząc się C# przez 2 lata, szybko zdałem sobie sprawę, że trzeba wpisywać do Google frazy po angielsku i tam wszystko można znaleźć – lepsze lub gorsze, ale zawsze to jakieś tropy, które dość dobrze naprowadziły mnie na ten nowy dla mnie język programowania (i tak jestem pozytywnie spaczony przez Delphi).

Ale tu ciekawostka – kto pisze po angielsku? Spodziewałbyś się, że pisze dużo Hindusów, Arabów i Rosjan? A tak jest. Ani Hindusi nie piszą po hindusku, ani Arabowie po arabsku, ku mojemu zaskoczeniu nawet Rosjanie nie piszą cyrylicą.

Podobno na przemian z Rosjanami dzielimy pierwsze miejsce w konkursach programistycznych. Tylko różnica jest taka, że oni już są na Zachodzie, a my jakoś chyba nie – 4programmers.net, przynajmniej od tej strony, którą najczęściej oglądam, chyba nie. Cóż to za duch narodowy i duma? Albo wsiadamy do pociągu "świat", albo zostajemy w epoce Mieszka na zawsze.

To mnie chyba zmotywowało i podjąłem próbę stworzenia porządnego artykułu w dwóch językach.

Co tu dużo mówić o eksperymencie – wszystko już powiedziałem, tylko nie wymieniłem dwóch osób – "współautorów we wspólnocie 4programmers.net", choć ja raczej akorporacyjną i indywidualną istotą jestem.

@madmike i @Marooned

@madmike w ogóle podjął dialog i reagował na moje wpisy na forum, gdzie raczej nie spotykają mnie pozytywne oceny. @Marooned właściwie dał jeden pozytywny komentarz do mojego artykułu.

O czym tu mówić – o problemach z formatowaniem tekstu wewnątrz komórek i nagłówków tabel? Widziałem to w tabeli dzielącej stronę pionowo na połowy, ale nie zawsze, kiedy mi to było potrzebne występował idealny podział na dwie dokładnie połowy szerokości strony. Rozwiązaniem okazało się dzielnie tabeli na wiersze (tabeli), bo paragrafy i break'i się nie sprawdziły.

Najpierw trzeba włożyć dużo pracy. Trzeba mieć w miarę sensowną treść artykułu, potem ją przetłumaczyć w jakimś Wordzie, czy innym edytorze tekstów pozwalającym na tworzenie tabel, skoro już się ma taką koncepcję podziału strony. Później będzie już tyle zamieszania podczas edycji na 4programmers.net, że bez gotowych tłumaczeń nie ma co zaczynać. Przydaje się:

http://translate.google.com/

i tłumaczenie w dwie strony: i z polskiego na angielski, ale i odwrotnie – z angielskiego, który jest po przetłumaczeniu, z powrotem na polski. Czasem trzeba przestawić kolejność wyrazów, bo szyk zdania się temu translatorowi często myli. Translator lubi długie zdania - wtedy lepiej orientuje się w kontekście. Czasem jest lepsze słowo od użytego przez translator i warto go użyć. Jak już kompletnie nie wiesz, co słowo znaczy, wpisz tylko jedno słowo do przetłumaczenia, a zobaczysz wiele znaczeń, bo angielski jest pełen wieloznacznych i zastępczych słów.

I niech ci, którzy spróbują pisać teksty dwujęzyczne nie przejmują się pomyłkami w słówkach, bo to i tak jest zrozumiałe. Tak pokazuje moje doświadczenie w setkach rozmów telefonicznych, które swego czasu prowadziłem. Wytwarza się jakiś taki slang dwóch osób na zasadzie "wiem, że mówisz nieprawidłowo, ale wystarczy, że to rozumiem i mogę użyć twojego słówka, żebyś i ty mnie zrozumiał". Ale chyba większość z nas trochę bardziej doświadczonych nie miała innej opcji i trzeba było czytać teksty angielskie, które w informatyce są stosunkowo proste.

Dziękuję wam @madmike i @Marooned, że mnie zmotywowaliście, nawet, jeśli w ogóle nie mieliście tego na celu. Powiało nową siłą na mój upór, który często się łamał, choć przyznam sobie, że lubię żmudne eksperymenty, ale kto z nas ich tu nie robi. Jak nie jesteś uparty, to daj sobie spokój z zawodem programisty.

Czy mi się chce grzebać w znaczniki html, czy jakieś inne? Jestem za leniwy. Podobno programista musi być wystarczająco leniwy, żeby szukać najprostszych rozwiązań – z lenistwa właśnie.

Jeśli o wynik mojego eksperymentu z artykułem dwujęzycznym chodzi, to na jakiś czas jest jakiś model, na którym inni mogą się wzorować – dla mnie wystarczający i zadowalający. A może ktoś wymyśli coś ciekawszego! Może powstanie szablon, o którym pisał na forum @madmike, przeznaczony do takich celów. Nie będę tu pokazywał, jak się robi tabelkę w Coyote.

Spójrz pod adres:

Regułowy System ekspercki / Rule-driven expert system

i jak ci ten wzorzec pasuje, to spokojnie sobie poradzisz.

Miłych poszukiwań (byle w ogóle były).

Artur Protasewicz

@Demonical Monk: Myślę, że kartka A4 Word'a Times New Roman 12 byłaby sensownym ograniczeniem. Trudno przewidzieć, jaki kto ma styl.

aurel

@Artur Protasewicz: Podziwiam za chęci i ilość włożonej pracy. Widać, że artykuł jest dopracowany, że przyłożyłeś się krótko mówiąc :)
Co prawda nie do końca przemawia do mnie układ tabelkowy. Kolumny - OK, ale tabelka...? A może to uraz front-endowca ;) Nie przepadam po prostu za wykorzystaniem tabelek do układania tekstu.

AlfaLeporis
2013-10-05 17:53

Biblioteka Prism, dzień pierwszy - po lekkiej terapii szokowej zaczynam dostrzegać potencjał tego narzędzia. Pierwsze co próbuję zrobić: zintegrować NLoga z tym cudem. Implementacja ILoggerFacase napisana, CreateLogger przeładowany, wszystko działa. Szkoda tylko że nie mogę wykorzystać potencjału funkcji NLoga GetCurrentClassLogger...

EDIT: Dzień pierwszy? I chyba ostatni... wracam do MVVM Light.