Programistyczne WTF jakie Was spotkały

3

Ponarzekam na procedurę instalacji i aktualizacji Windows 10.

Był sobie 64-bitowy Windows 8. Potem zaktualizowany do 8.1, potem do 10 - niedługo po premierze. Aktualizacja przebiegała bez problemu. Jednak w żadnym z wymienionych nie działa hibernacja na tym komputerze (zawiesza się na startowym logu Windowsa).
System był jednak rzadko odpalany (patrz niżej). Chciałem go jednak zaktualizować do wersji 1511. Nic z tego - nie pojawia się w Windows Update ta opcja, za to mam możliwość powrotu do Windows 8.1, która rzekomo jest dostępna przez miesiąc od instalacji dziesiątki. Czy ten miesiąc jest liczony jako 31 dni „roboczych” systemu? Bo kalendarzowych minęło pół roku.

WU odnajduje też "aktualizację zbiorczą" z grudnia 2015. Ściąga się, instaluje, chce restartu, restartuje się ze trzy razy, dostaję komunikat że nic z tego, uruchamia się normalnie. Po czym znowu instaluje aktualizację w tle, chce restartu, restartuje się trzy razy, nic z tego. Uruchamia się, instaluje... itd.
Opcji ignorowania konkretnego patcha niet.


Ten sam komputer, inna partycja. Windows 7 32-bitowy. Hibernacja działa. Wpadłem na pomysł zaktualizowania do 10 - może w 32-bitowej wersji Win10 hibernacja będzie działać? Standardowy aktualizator pisze że „niestety” procesor nie jest obsługiwany. No jak nie jest obsługiwany, skoro 64-bitowa wersja zainstalowała się na tym samym komputerze i działa? (no, prawie) Problem okazuje się znany, ludzie taki błąd dostają na i5 czy na i7, więc to bzdura jakaś. Proponowany patch jednak nie pomaga. Uruchamiam przez "media creation tool". Dobra, ściąga. Idę spać. Rano po ogarnięciu tematu przewróconej choinki i sprzątnięciu pobitych bombek, zobaczyłem że aktualizator stoi i cierpliwie czeka na potwierdzenie umowy licencyjnej. Noż..

„Sprawdzamy czy wszystko gotowe, może to potrwać kilka minut” - pomijając że irytuje mnie ten „przyjazny” styl wypowiedzi który pojawił się za czasów Windows 8 (a który jest widoczny też w angielskiej wersji, więc to prikaz odgórny), to trwało to nie kilka minut a kilka godzin.
Po czym musiałem coś kliknąć-potwierdzić, zaczął ściągać jakieś aktualizacje, i znowu „sprawdzamy czy wszystko gotowe”.
W końcu po którymś już potwierdzeniu zaczęły się procenty, więc to chyba „już”. Odruchowo zamykam laptopa i wychodzę z domu.
Wracam po trzech godzinach, zerkam na laptopa i widzę że dioda mruga. Dziad się uśpił od zamknięcia pokrywy. Mimo że była ta funkcja wyłączona (zawsze mam zamknięcie pokrywy na „nic nie rób”).

Microsoft wciska Windows 10 na siłę, ale coś bardzo nie chce żebym zaktualizował 7 do 10...

1

Wordpress to jest jakieś dziecko kinderscripterów z chorobą sierocą...

$target = rtrim($target, '/');
if ( empty($target) )
	$target = '/';
if ( file_exists( $target ) )
	return @is_dir( $target );

Jeżeli nie ma dostępu do / to zaczyna napierdalać logami... od wczoraj 700GB. Ja się pytam dlaczego apka o której wiadomo, że będzie uruchamiana w środowiskach o wysokich obostrzeniach dostępu robi coś takiego?

0
const delim = []byte("#")

const initializer ([]byte)("#") is not a constant

1

Dalszy ciąg posta wyżej o aktualizacji Windows 10.

Dałem sobie spokój z nieinstalującą się grudniową „aktualizacją zbiorczą”. Postanowiłem zaktualizować 64-bitowy Windows 10 RTM do nowszego builda zwanego „Windows 10 wersja 1511” przy pomocy “Media Creation Tool” (normalnie z jakiegoś powodu nie pojawia się opcja).

Po dłuższej chwili zobaczyłem ekran „przywracanie poprzedniej wersji Windows”. Oj, niedobrze. Po paru minutach restart, i znowu „przywracanie”. I restart i „przywracanie”. Oj, bardzo niedobrze.
Najgorsze że nie pokazuje się menu startowe, i nie mogę wybrać drugiego systemu zainstalowanego na komputerze, by jakoś zapanować nad sytuacją. Laptop się scegłował.
Pozostaje mi „pożyczyć od przyjaciela” instalacyjny obraz systemu (już w wersji 1511). Suma SHA się zgadza, „wypalam” go na karcie SD.
Spod instalatora mam możliwość odpalenia 32-bitowego Windowsa na drugiej partycji - dobrze, mogę zgrać dane z „64-bitowej” partycji, i odczytać cd-keya gdyby był potrzebny do reinstalacji... nie, tego ostatniego nie mogę, jest odmowa dostępu do plików rejestru. WTF. Plik skopiować się udało dopiero pod odpalonym z USB Linux Mint.
Serial okazał się identyczny w obu kopiach Windows 10 (32- i 64-bitowej) na laptopie. Dziwne, bo oba systemy mają zupełnie różną historię (jeden był zainstalowany jako Windows 7, drugi jako Windows 8). Mam nadzieję że to nie będzie powodowało problemów z aktywacją, bo wygląda tak jakbym miał dwie kopie z tym samym serialem - mimo że obie miały (pierwotnie) osobne licencje.

Wracam do windowsowego instalatora. Po raz pierwszy w życiu, nie mając innego wyjścia, robię „formata” by przeinstalować windę.. Sama instalacja się wykrzaczyła błędem kopiowania pliku gdzieś w połowie. Za drugim razem tak samo. Po kilku podejściach (nagraniu karty na nowo, sprawdzeniu jej chkdskiem) zmieniłem czytnik SD - tym razem przeszło do końca. Kolejny WTF, chociaż nie wiadomo po której stronie.

Microsoft w nowym buildzie Windows 10 „naprawił” niedziałającą hibernację. Naprawienie polega na tym, że zamiast zawieszać się, to.. nie działa. Po prostu nie ma takiej opcji, mimo że jest niby włączona. Czyli wiedzą że nie będzie działać, ale zamiast naprawić to wyłączyli.

0

user image

Nie wiem czy się cieszyć czy martwić, że takie rzeczy wyłapuję

1

user image

1

Wśród różnych rzeczy które robię mam też "dbanie o sonara", czyli robienie dobrze excelowi klienta z jakością kodu. Sprawdzam ci ja dzisiaj status i widzę dużo czerwonego. Część jest ok, bo będzie jeszcze czas by to ogarnąć, ale jeden element mnie urzekł...

try{
    result.add(some.getTV().getT().getRC().getName());
    result.add(some.getTV().getT().getRC().getIden());
}catch(NullPointerException e){
    result.add("");
    result.add("");
}

TV, T, RC to skróty z klasy w oryginalnym kodzie jest pełna nazwa. Popełnił to nie junior.

1

Szczerze zastanawiałem się gdzie to dać, ale sądzę, że tu będzie chyba najlepiej:

https://www.reddit.com/r/linux/comments/43ls7j/no_post_after_rm_rf_systemd_uefi/

Podoba mi się jak wszyscy zrzucają winę na systemd, bo przecież to ich wina, że producent sprzętu jest idiotą.

0

Magia wordpresa... By zabezpieczyć to sito z kolegami ograniczyliśmy dostęp do bazy do select i czytanie plików - cudownie bo przez rok nie patrzyliśmy tam i było pięknie, niestety nadszedł czas zaktualizowania treści strony, po 4h zdjętych zabezpieczeń wgrało się jakieś g**no i próbowało spamić przez exim4, skapnęliśmy się po 3 dniach bo coś zaczęło dojeżdżać server :D ale nic nie wyszło bo jedyne porty jakie wychodziły to 80 xD

3

Nie jest to typowy WTF, ale zadumę miałem niezłą. Pracuję wczoraj z PHPExcel i ku mojemu zdziwieniu

strpos('<', $data)

zwracał mi cały czas false mimo to, że ten char tam był. No więc debugguje.. Porównuję ASCII, zapisuję do pliku na różne sposoby, raz zwraca to co powinien raz nie itd. Co się okazało? Że szukałem stogu siana w igle (tzn. PHPExcel szukał). Zostały odwrocone argumenty.. Był to bug, który został naprawiony, ale nikt od tamtego czasu nie aktualizował biblioteki. :D

0

WTF kompilatora (chociaz nie wiem jak dziala to dokladnie i moze to ma tak dzialac)

C#, WPF. Robilem sobie Grida. i na dwoch polach mialem dwie takie same nazwy zmiennych definiowane w ten sposob

pierwszy

                    <Border Grid.Column="5" Grid.Row="14" BorderThickness="0.5" BorderBrush="Black">
                        <TextBlock Padding="8 2 0 2" x:Name="tbCO2Week"></TextBlock>
                    </Border> 

drugi

                    <Border Grid.Column="5" Grid.Row="17" BorderThickness="0.5" BorderBrush="Black">
                        <TextBlock Padding="8 2 0 2" x:Name="tbCO2Week"></TextBlock>
                    </Border> 

kod sie kompilowal bez problemow (!!!)

pozniej oczywiscie strona sie crashowala a ja glupi nie wiedzialem czemu

(musialem tak definiowac datagrida. Tak wiem ze, sa lepsze sposoby na zrobienie tego)

3

Microsoft nie potrafi się zdecydować jak powinno wyglądać Direct3D, bo z wersji na wersję na nowo przekombinowuje.

W ramach testów napisałem program który inicjuje Direct3D kolejno we wszystkich wersjach. Na razie mam wersje od DirectX 6 do 12.

W każdej wersji inicjuje się Direct3D inaczej: nie wystarczy zmienić cyferki; zmieniają się nazwy funkcji, ich parametry, wartości tych samych stałych w enumie (!), ilość funkcji które trzeba kolejno wykonać - a to dopiero inicjacja.

8

user image

0

Oglądałem sobie film "Marsjanin". Nie wiem czy informatyk na tym statku kosmicznym jest jakimś guru formatów plików obrazów czy co? :D

not jpg.jpg

Oprócz tego że (mimo że komunikacja z marsem trwa ~ 40 minut) w filmie ludzie piszą wiadomości typu
How's mars?
albo
Alright, buddy
komunikując się z inną planetą, albo wspomnianych guru jpega zostają całkiem fajne wrażenia

4

Ukrainiec płakał, ze szczęścia, jak commitował. Polak płakał, z radości, jak robił CE-Erkę... a mi opadły witki.

Krótkie wprowadzenie teoretyczno-środowiskowe. W zespole używamy dwóch różnych metod analizy kodu. Pierwsza to sonar. Nazwijmy ją codzienną. Jest to w miarę wyprostowane, z dokładnością do kilku rzeczy, które zostawił #germańskiprogramista. Tego nie ruszamy; zastosowaliśmy wzorzec projektowy "opakowanie gówna w celofan". Sonar ma to do siebie, że jest tam jakiś oficjalny profil do którego musimy się stosować. Mamy wyznaczone poziomy ile czego może być i jest OK.
Drugim narzędziem jest analiza prowadzona przez Veracode. Zewnętrzny dostawca, ma papier na robienie testów i testy te są uznawane za "spełniające wymagania audytu". Puszczamy to raz na 6 tygodni przed releasem. W praktyce oba narzędzia się uzupełniają...

Dziś otwieram raport veracode, bo trzeba posprzątać przed releasem i mam tam coś oznaczone jako High (przedostatni poziom). W dodatku nowe. Ok lecimy do kodu, a tam taki oto ulepek:

jdbcTemplate.query(String.format(HEADER_DATA_SQL, ids), handler);
jdbcTemplate.query(String.format(BODY_DATA_SQL, ids), handler);

ids leci przez wszystkie warstwy bezpośrednio z formularza wypełnianego przez użytkownika. Najlepsze jest to, że nie idzie tego jakoś rozsądnie naprawić, bo sql-ki są skomplikowane i z wielokrotnie zagnieżdżonymi warunkami in... ech... a wystarczyło napisać funkcję, która by to zrobiła.

0

Pewnie kod na zajęciach :) Miał za zadanie uruchamiać notatnik i kalkulator

user image

Nie prościej by było takie coś zrobić zamiast tak wydłużać kod

user image

0
    private function _getReadConnectionDescription()
    {
        switch ($this->_params['type']) {
            case self::TYPE_PROCESS:
                return 'Process '.$this->_params['command'];
                break;

            case self::TYPE_SOCKET:
            default:
                $host = $this->_params['host'];
                if (!empty($this->_params['protocol'])) {
                    $host = $this->_params['protocol'].'://'.$host;
                }
                $host .= ':'.$this->_params['port'];

                return $host;
                break;
        }
    }

W bibliotece z której korzystam (już pomijając to chore sprawdzanie wartosci w switchu) jest masa takich funkcji w których w każdym (! każdym !) switchu jest return $coś; break;.

3

(bluehost)
wtff.png

10

Mnie kiedyś kolega zapytał:

Dlaczego te pliki '*.class' mają takie dziwne kodowanie?

5

Z cyklu relacje w bazie danych ...
Tabela nazwijmy ją: CMP - około 20 różnych kolumn uzupełnianych z formatki - tu problemu nie ma
Tabela nazwijmy ją: DMP - 3 kolumny: 1 - ID, 2 - nazwa , 3 - XML - wyboldowane bo tu jest magia

Teraz z poziomu UI można wpływać na zmianę poszczególnych kolumn w CMP (edity, combo itd. nic nadzwyczajnego) ale po naciśnięciu "zapisz" również prócz update na CMP odpala się blok kodu z UI generujący XML z listą kolumn zmienionych w CMP i ten XML zapisywany jest w DMP więc mamy np coś takiego CMP.Kol1 = 'ALAMAKOTA" i DMP.XML = <Kol1>AlaMaKota</Kol1>. Z uwagi, że w CMP jest blisko 50 kolumn to XML w DMP ma około 50 bloków <>.

Teraz pytanie co dalej ... otóż DMP.XML jest swojego rodzaju słownikiem / kluczem obcym do tabeli CMP więc jak sobie z combo user wybierze jakiś rekord (oczywiście w UI wyświetla się DMP.nazwa) to zmieniane są parametry CMP.Kol1...Kol2 parsując DMP.XML ...

Jakby nie można było dorobić pola nazwa do CMP i po temacie :P

1

Metoda na prawie 2000 linii. Do tego nic nie mówiące nazwy zmiennych i magiczne liczby. Indyjska myśl technologiczna w najczystszej postaci.

0
function _beginpage($orientation,$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='') {
//....
}

Boże, takie kiedyś były standardy (mPDF)?

0

Finalizacja inicjalizacji. Proszę czekać.

init.png

1

2016 rok, a komputery liczą do 100: 104-year-old Swede given kindergarten place

9

Do tej pory udało mi się spotkać takie kolumny jak urban heating czy is_wielka_plyta, ale cieć_id wygrał.

1

Kod c#:

try
{
// tu kod kilkadziesiąt linijek kodu
}
finally
{
}

I teraz pytanie. Co autor miał na myśli? ;)

0

Ja do niedawna pracowałem przy projekcie, w którym były tabele pytanie1, pytanie2, pytanie3, ... i tak do chyba 22. Przy czym w np pytanie7 co ciekawe nie była trzymana odpowiedź na pytanie, lecz wartość całkowicie niezwiązana z pytaniami.

Kolejnym WTF było trzymanie 3 różnych wersji jquery, bo podczas tworzenia niektóre pluginy wymagały różnej wersji jquery i stąd się ich tyle nazbierało.

1

Nie spotkało mnie osobiście, ale fajny artykuł o tym, jak mongo to jeden wielki WTF:
https://aphyr.com/posts/322-jepsen-mongodb-stale-reads

0 użytkowników online, w tym zalogowanych: 0, gości: 0