Tajne wpisy w app.config #dajsiepoznac

Jeśli nie chcesz mojej zguby…

Jeśli nie chcesz swojej zguby, nie wrzucaj do repozytorium sekretów swojej aplikacji. Można to osiągnąć w kilku prostych krokach, wystarczy że stworzysz w VS osobny plik z konfiguracją np. “secrets.config“, który może wyglądać tak:

Następnie zaciągniesz go w głównym web.configu w taki sposób:

W VS należy mieć go dodanego do projektu, właściwości ustawione powinny być na content i no-copy, tak samo jak w przypadku web.config. Od teraz zawartość secrets będzie wstrzykiwany do web.config podczas uruchomienia.
Jeszcze tylko w gicie warto dodać go do ignorowanych plików i można spokojnie wrzucać kod na serwer bez potrzeby pamiętania, aby zawsze odznaczyć secrets.config z listy plików.

Natomiast warto pamiętać, aby po każdej zmianie zrobić sobie backup. Tak aby nie stracić go przez przypadek.

ITAN – projekt rusza razem z #dajsiepoznac

Is There Any News

Jest to plan na internetową aplikacją do czytania kanałów RSS. Chodziło mi to po głowie już jakiś czas, kiedyś sprzedałem ten pomysł studentom, z którymi miałem okazję się współpracować. Sam pomysł wydaje się być prosty, dlatego ja zamierzam dołożyć do tego kilka dodatkowych rzeczy. Wymarzyłem sobie, że każdy użytkownik będzie mógł poza kanałami RSS obserwować także innych użytkowników. W ten sposób można poznać, jakie kanały czytają inni, które wpisy czytają dokładniej i czy  klikają po pełną treść. Podobnie marzy mi się, aby na takiej podstawie generować podsumowania dnia, miesiąca, tygodnia. Takie najgorętsze informacje. W ten sposób nie trzeba śledzić wszystkiego, a tylko te które inni czytają, udostępniają lub komentują. Jeśli wydaje Ci się to proste spójrz na dół strony, to tylko część rzeczy, które wymyśliłem do tej pory.

Jak zebrać pomysły

Jeśli macie ta przyjemność planowania czegoś, zbierania pomysłów, głębokiej rozkminy, co, gdzie, jak z kim to szczerze polecam mind mapping. Znowu product placement i znów android: ja aktualnie korzystam z SimpleMind dla androida. Wersja podstawowa ma wszystko, wersja płatna umożliwia synchronizacje w chmurze i eksport do obrazków i innego (30pln).

Dlaczego mind mapping? Dla mnie to co jest świetną sprawą to możliwość skakania po pomysłach i dopisywanie każdego kolejnego tam gdzie czuje że będzie pasować. Nie piszę ich jeden pod drugim, mogę rzucić gdzieś na ekranie, a potem powoli łączyć jeden z drugim, aż całość stanie się spójna. Lub zacząć od ogólnego planu i potem skupiać się i wymyślać do dalej, dodawać nowe zabawki.
Z mapowania korzystam także podczas robienia notatek ze spotkania, przygotowywania prezentacji, czy szkoleń i warsztatów. Takie surowe myśli mogę potem przejrzeć,poprawić i połączyć ze sobą.

Mind map ITAN

Poniżej moja wizja na to jak i co ma robić ITAN (ach, taka piękna nazwa robocza)

ITAM mapa myśli

Zadania

Co dalej? Zapewne przetłumaczę na małe zadania i przepiszę to wszystko na odpowiednie pojedyncze zadania na trello, aby móc śledzić na bieżąco swój postęp prac. Trello to świetna i darmowa (pewnie z ograniczeniami?) internetowa tablica kanbanowa. Tworzy się kolejne tablice/projekty na nich odpowiednie kolumny i zadania. Potem wystarczy tylko robić i przeciągać w trakcie postępowania prac na projektem. Tablica ITAN dostępna jest po tym adresem: https://trello.com/b/ONqNYIcH/itan W momencie pisania posta nie ma tam nic, poza zdefiniowanymi kolumnami.

Źródła

Githuba nie muszę raczej nikomu przedstawiać. Znowu idąc na skróty, źródła dostępne będą pod tym linkiem https://github.com/jstadnicki/isthereanynews

Tyle, powodzenia i do roboty.

Programistyczne wywołanie debuggera

Jeśli zdarzyło wam się kiedyś debugować przez Console.WriteLine(…) lub dzielić przez zero, tylko po to aby odpalił się debugger I podpinać do tego visual studio to ta linijka będzie dla was na wagę złota:

System.Diagnosticks.Debugger.Launch();

Gdy wykonywany kod dojdzie do tej linijki pojawi się okienko z pytaniem czy chcesz debugować aplikację, po “jesie” VS dopina się do procesu I normalnie można korzystać z dobrodziejstw inwentarza. Sztuczka przydatna gdy kod jest uruchamiany przez zewnętrzny proces, a wy dostarczacie jedynie bibliotekę z kodem.

Debugger.Launch() uwalnia od wszelkiej maści dzielenia przez zero, pisania na konsole, rzucania wyjątków, robienia MessageBox, żeby zaczekało na dopięcie debuggera, sleepów, etc. Złoto!

ps. Może ktoś nie wie, ale w javascript jest coś takiego jak debugger;

Nauka uczenia się i rozwijania się część 3 – podcasty

Oskar i Kokos zebrali w swoich postach całkiem sporo materiału na temat skąd i jak można czerpać wiedzę i o tym jak się uczyć. Ich wpisy można znaleźć:

Oskar: Nauka uczenia (się)
Kokos: Jak się rozwijać?

Ja dodam od siebie jeszcze jedną rzecz, która nie została wcześniej wymieniona, a moim zdaniem daje sporo. To podcasty. Słuchając ich nie tyle uczę się danej technologii, czy jednego słusznego rozwiązania, a raczej dowiaduje się o innych, alternatywnych do codziennej pracy, rozwiązaniach które może kiedyś da się wykorzystać. Moja lista podcastów:

  • .Net rocks – pierwszy podcast którego słuchałem, skupia się wokół .net
  • A moment of science: Audio – krótkie historyjki ze świata technologi i ogólnej wiedzy
  • Being the worst – mam na liście, ale jeszcze nie dotarło do odtwarzania
  • Coding Blocks – techniczny podcast, skupiający się na .net
  • Full Stack Radio – różnie bywa, czasami wywiady z autorami produktów/bibliotek, czasami opowieści o architekturze i programowaniu. Warto posłuchać tych opowieści, mnie zainspirowały do kolejnego wpisu
  • Hanselminutes – sam Hanselmann, kiedyś technicznie, teraz równouprawnienia, szczerze mówiąc od jakiegoś czasu najczęściej przeskakuje, przykro mi Scott
  • Herding Code – technologicznie, różne osoby, różne technologie
  • JavaScript Jabber – javascript
  • Mała Wielka Firma – podcast o budowaniu własnego przedsiębiorstwa, bardzo fajnie i ciekawie opowiadają
  • Radiolab – opowieści, świetnie przygotowane słuchowiska, czasem moralizujące, czasem opowiadające historię leków, czasem po prostu zabawne, przesłuchałem od początku wszystkie
  • TED Radio Hour – TED w radiu
  • ThoughtWorks – opowieści z firmy, liczę że będą kiedyś ciekawe rzeczy

I ile wcześniej słuchałem każdego epizodu z każdego źródła od deski do deski, to teraz mają ich duży wybór pomijam te, które nie są tak bardzo porywające. Zdarza się także, że jedna osoba występuje w różnych wywiadach dla różnych podcastów, a mówi o tym samym, wtedy również szkoda czasu.

Jeśli chodzi o aplikację do podcastów to szczerze polecam Podcast Addict dla androida. Używam od 2 lat I nie zamierzam zmieniać na nic innego.

Zapis i odczyt data-attribute w DOM

Czasami trzeba zapisać coś w strukturze DOM, a potem odczytać te dane ponownie. I ponownie zapisać i odczytać i jeszcze raz. Z pomocą przychodzi wtedy nieśmiertelne jQuery. Znajdujemy wtedy interesujący nas element $(element) a następnie przy pomocy metody .data(“…”) odczytujemy wartość, lub .data(“…”,”…..”) zapisujemy wartość. jQuery lubi te dane sobie zapisać w swoim cache. Może się więc okazać, że każdy kolejny odczyt wskazywać będzie zawsze tą wartość, którą odczytaliśmy za pierwszym razem. Co wtedy? Są dwa sposoby; kiedyś udało nam się rozwiązać ten problem korzystając z innej metody, ale też jQuery; mianowicie .attr(“data-….”) i symetrycznie .attr(“data-…”, “…”) do odpisu i zaczytu (literówki!). Czasem i to nie wystarcza i wtedy należy sięgnąć po wanilie i skorzystać z getAttribute(“data-…”) oraz setAttribute(“data-…”,”…”) – te ostatnie zawsze działają. Jeden jedyny minusiczek, to taki: że jest to wyłom w spójności kodu, tzn. jeśli wszędzie używamy jQuery, a gdzieś wanilii, to dla części może to kłuć w oczy.

 

//EDIT (05.03.2016)
Przygotowałem przykład dostępny w jsfiddle jak i w giscie. Wygląda na to, w zmęczeniu przegapiłem pewne zależności lub coś działało jeszcze inaczej. Mianowicie problem z odczytem pojawia się wtedy gdy zapiszemy do data przy pomocy setAttribute a odczytamy za pomocą $.data, lub zapiszemy $.attr i odczytamy $.data. W tych przypadkach dane nie zostaną odświeżone. Sami sprawdźcie. Podziękowania dla @jarekkoziol za bycie ciekawskim.

GIST:

JSFiddle:
https://jsfiddle.net/jstadnicki/ydtry0c9/