Co nowego na forum?

somekind dodał komentarz w Mentalność wynajmujących

9 sekund temu Może dlatego Cię nie stać na mieszkanie?

Julian_ dodał komentarz w Mentalność wynajmujących

26 sekund temu nie wolno straszyc sadem, mozna za to beknąć

MasterBLB dodał komentarz w Zmienna statyczna w klasie licząca ile klas powstało

31 sekund temu To wystarczy dać inkrementację licznika w konstruktorach(wszystkich w razie jakby kl...

somekind dodał post w Nazwy klas,zmiennych itd dla domeny biznesowej ściśle związanej...

1 minuta temu AnyKtokolwiek napisał(a): Kto przetłumaczy "becikowe" ? Ja. start maternity grant. W...

Złoty Szewc dodał post w Co to są soft skille i czy da się ich nauczyć?

2 minuty temu aurel napisał(a): Boje sie, że mają mnie za idiote Jest 6 rano i w ogole nie spalem...

Michal91 dodał wątek Problem z legacy docker i RHEL

3 minuty temu Hej mam taki problem z dockerem 1.7 (musi być ta wersja) / RHEL6.10 (RHEL ma minimal...

Julian_ dodał komentarz w Mentalność wynajmujących

3 minuty temu jak ja widzę prysznic/wannę z zasłonką to przewijam dalej

Kardam dodał post w Zmienna statyczna w klasie licząca ile klas powstało

7 minut temu MasterBLB napisał(a): Kardam napisał(a): Witam, chciałbym zaimplementować zmienna st...

FpermissiveBlad dodał post w VLA w C++ i używanie zmiennych poza ich zakresem.

8 minut temu Po prostu nie ogarniam funkcji std::vector a widze ze bez tego sie nie obedzie. Dla...

Kardam dodał post w Zmienna statyczna w klasie licząca ile klas powstało

8 minut temu Dziękuje za odpowiedzi. Z tym const chodzi mi o to, (a właściwie nie mi tylko to wym...

mistrzkrisu6 dodał wątek siatka bootstrapowa - prawa kolumna na urządzeniach mobilnych wchodzi na dalszą sekcje

11 minut temu Witam, robię stronę i w drugiej sekcji na widoku na urzadzeniach mobilnych tekst, kt...

Desu dodał komentarz w Od czego zaczać nauke programowania na platformę android

12 minut temu Oczywiście, że tak. Mądra decyzja!

Aryman1983 dodał komentarz w Od czego zaczać nauke programowania na platformę android

13 minut temu Hehe algorytm udemy pomoże nam zdecydować się na wyjęcie z koszyka i zakup Nice try...

kq dodał post w VLA w C++ i używanie zmiennych poza ich zakresem.

15 minut temu Nie rozumiem pytania. Jak masz tablicę, to jej n-ty element odczytujesz za pomocą op...

Desu dodał komentarz w Od czego zaczać nauke programowania na platformę android

16 minut temu Czasami się zdarza, że faktycznie jest bieda i nie ma kuponu na nasz kurs. To wtedy...

FpermissiveBlad dodał post w VLA w C++ i używanie zmiennych poza ich zakresem.

18 minut temu Dzieki za odpowiedx. A czy jest jakas mozliwosc odczytu wartosci zmiennej ze zmienne...

kq dodał post w Obliczanie średniej ocen po odjęciu najwyższej i najniższej

18 minut temu Ale durne ćwiczenie... nie używaj zmiennych globalnych :​/ Jak nie chcesz przekazywa...

Aryman1983 dodał komentarz w Od czego zaczać nauke programowania na platformę android

20 minut temu Mam tam dwa kursy o gRPC wykłupione i chyba jakiś darmowy za coś tam Oba kupione po...

Mały Mleczarz dodał post w WSEI

21 minut temu lambdadziara napisał(a): A co jeżeli zrobie inzyniera na slabej uczelni a potem zrob...

Popularne wpisy na mikroblogu

cerrato
wczoraj, 10:43

Modernizacja zasilania serwerowni.
Będzie trochę czytania, ale może komuś się ten opis przyda, albo okaże inspiracją do zrobienia czegoś podobnego u siebie ;)

Niedawno padła decyzja o modernizacji zasilania serwerowni (właściwie to decyzja zapadła już daaawno temu, ale jakoś nie było czasu ani ochoty, żeby to doprowadzić do końca). Oczywiście, można po prostu wstawić dużego UPS'a, ale można także podejść do tematu merytorycznie. Uznaliśmy z kumplem, że zrobimy to "na bogato", a pisząc to nie mam nawet na tyle na myśli budżetu (łącznie całość kosztowała ok. 10kpln), tylko o porządne i całościowe potraktowanie tematu.

Podstawowa sprawa - skoro mówimy o instalacji elektrycznej, to zacznijmy od tablicy rozdzielczej. Już wyjaśniam, od czego są poszczególne "pstryczki":

  • 1, 2 i 3: zabezpieczenia typu C25 na wejściu do skrzynki. Wprawdzie cała instalacja w serwerowni jest jednofazowa, ale do rozdzielni doprowadziliśmy wszystkie 3 fazy. Za chwilę wyjaśnię, dlaczego zrobiliśmy właśnie tak :)
  • 4: potrójna lampka sygnalizacyjna, po prostu pokazuje, czy z opisanych powyżej zabezpieczeń "wychodzi" zasilanie.
  • 5: selektor faz, czyli magiczne urządzenie, do którego doprowadza się 3 fazy, a ono wykonuje specjalną magię, dzięki czemu zawsze z niego wychodzi zasilanie jednofazowe. Wyjaśniam: do budynku jest doprowadzone zasilanie trójfazowe, mamy parę urządzeń, które z niego korzystają. Ale 95% (albo i więcej) urządzeń odbiorczych jest jednofazowych. Oznacza to, że po prostu czerpią zasilanie z jednej z faz. Jeśli z jakiegokolwiek powodu dana faza zaniknie (awaria dostawcy prądu, "wyskoczony" bezpiecznik czy uszkodzony przewód), to urządzenia zasilane tą fazą zostają odłączone od prądu. Analogicznie - wpinając po prostu szafę serwerową do jednej z faz, jakby ta faza padła, to zasilanie serwerowni także by przestało istnieć. W związku z tym stosujemy selektor faz. Jest to urządzenie, które "przekazuje" dalej pierwszą fazę. Jeśli ona zaniknie, to przełącza zasilanie na drugą. a jeśli ona także zniknie, to na trzecią. Oznacza to, że samo zasilanie serwerów jest niezależne od konkretnej fazy i dopóki którakolwiek z 3 faz jest zasilana, do szafy zawsze będzie doprowadzone zasilanie.
  • 6, 7 i 8: bezpieczniki B2 używane do sterowania stycznikami. Zasadniczo, przez selektor faz można puścić bezpośrednio prądy do 16A przy 230V, ale większe natężenia mogą go zabić. Dlatego, żeby była możliwość podłączenia większych obciążeń do selektora, konieczne jest dołożenie dodatkowych styczników. Producent selektora zaleca podłączenie styczników do selektora przez zabezpieczenie typu B2. Tak więc, pomiędzy selektor a stronę sterującą cewką przekaźnika, podłączamy zabezpieczenia
  • 9, 10 i 11: styczniki 25A opisane w poprzednim punkcie. Są sterowane przez opisany powyżej selektor faz, przez nie realnie przechodzi zasilanie puszczane na obwody. Jak wspomniałem - kontroluje je selektor faz, a w danej chwili może być wysterowany jedynie jeden przekaźnik. I miejmy nadzieję, że selektor się nie pomyli, bo jak puści jednocześnie zasilanie przez 2 albo 3 sterowniki, to może się zrobić duże BUM...:(
  • 12: przełącznik typu sieć/UPS. Domyślnie zasilanie podawane na obwody odbiorcze przechodzi przez przetwornicę 4kW, która je zarówno stabilizuje, jak i zapewnia bateryjne zasilanie awaryjne w wypadku zaniku zasilania w sieci. Ale czasem może się pojawić konieczność zasilenia odbiorów bezpośrednio z sieci - chociażby w razie prowadzenia prac serwisowych wymagających odłączenia przetwornicy, czy w razie jej awarii. Dlatego został zastosowany taki przełącznik. Ma on 3 pozycje: górna "puszcza" zasilanie z przetwornicy, środkowa odcina zasilanie od obwodów, a dolna "puszcza" na obwody odbiorcze zasilanie bezpośrednio z sieci. Jedyny mankament, na który za bardzo nie mieliśmy pomysłu (jest to do zrobienia, ale wymaga dość dużych wydatków oraz kombinowania z podłączeniem) to sposób, żeby dało się przełączać zasilania bez odłączenia szafy. Obecnie jest tak, że samo przełączenie trwa 2-3 sekundy, więc wystarczająco długo, żeby kompy zdążyły się wyłączyć :(
  • 13: zabezpieczenie B25 przed wyjściem na przetwornicę. Jak pisałem wcześniej - zasilanie serwerowni jest podtrzymywane przez przetwornicę z akumulatorami. Wszystkie opisane powyżej elementy mają na celu zapewnienie przetwornicy ciągłego zasilania, z trzech faz "wyciągają" jedną, która zostaje dostarczona do przetwornicy. To zabezpieczenie jest ostatnim w szafce, które jest przed przetwornicą, dzięki niemu możemy całkowicie odłączyć zasilanie przetwornicy. W połączeniu z przełącznikiem sieć/agregat pozwala ono całkowicie i z obu stron (zarówno od strony zasilania, jak i odbiorów) odciąć przetwornicę od reszty instalacji.
  • 14: różnicówka 25A 30mA dla obwodów odbiorczych. Chyba nie trzeba za wiele wyjaśniać ;)
  • 15: lampka kontrolna zasilania obwodów odbiorczych. Wcześniejsze lampki na wejściu pokazywały, czy tablica otrzymuje zasilanie z sieci. Ta lampka z kolei pokazuje, czy zasilanie jest dostarczane na obwody odbiorcze. Nieważne, czy to zasilanie idzie bezpośrednio z sieci, czy przez przetwornicę, jeśli z różnicówki wychodzi prąd, to ta lampka się będzie świecić.
  • 16-20: zabezpieczenia B16 obwodów odbiorczych. Tutaj chyba też nie ma czego wyjaśniać ;) Dwa obwody są przeznaczone do szafy serwerowej, pozostałe 4 podtrzymują kilka stanowisk w firmie, dzięki czemu w razie awarii zasilania będzie możliwość prowadzenia obsługi klientów.

Na tablicy brakuje jeszcze jednego elementu - miernika energii, który będzie pokazywał aktualne obciążenie/aktualny pobór. Oglądając dostępne rozwiązania (oraz patrząc, co jest dostępne od ręki w miejscu, z którego zamawiamy tego typu zabawki), wybór padł na CONTO D2. Niestety, podczas zamawiania popełniłem błąd i zamówiłem wersję D2-B, który działa jak typowy licznik prądu, czyli pokazuje łączne zużycie od chwili jego zainstalowania i na tym się kończą jego możliwości. Licznik wymieniłem na taki, jaki chciałem i przy okazji go zainstaluję. Niestety, ponieważ wiąże się to z koniecznością odłączenia zasilania od szafy - czekam z tym na "okazję", czyli zrobię to podczas prowadzenia innych prac, które wymagają i tak wyłączenia zasilania, a na razie moje CONTO leży u mnie na biurku, patrzy na mnie i powoduje wyrzuty sumienia ;)

To by było na tyle. Za pewien czas, jak dokończę drugą część systemu zasilania - czyli przetwornicę, akumulatory itp, jeśli ktokolwiek będzie zainteresowany moimi dzisiejszymi wypocinami, wrzucę drugą część na blog ;) Obecnie wprawdzie wszystko już działa, ale na tylko 4 akumulatorach, do tego stojących luzem na podłodze i podpiętych prowizorycznie. Nie ma się czym chwalić, ale jak to skończę to chętnie pokażę :)

EDIT:
w związku z komentarzami @Mjuzik dodałem ostanie foto - czyli głównej rozdzielni. Pojawiła się kwestia braku zabezpieczeń przepięciowych. Rzeczywiście - w opisanej rozdzielni czegoś takiego nie ma, ale są one w głównej rozdzielni, która "ogarnia" cały budynek. Mamy tam zainstalowane moeller SPB 12/280, które zabezpieczają całość. Po głównej rozdzielni są zainstalowane podrozdzielnie, które obsługują dane segmenty budynku, a opisana przeze mnie tablica do zasilania serwerowni jest jedną z nich. Nie ma sensu duplikować zabezpieczeń, aczkolwiek uwaga @Mjuzik o tych zabezpieczeniach była słuszna :)

czysteskarpety

i obrazki, jak ktoś słabo czyta to chociaż są obrazki do pooglądania :]

Spine
wczoraj, 22:17

Wykopane. Aktorzy z serialu "Friends", uczą obsługi Windows 95 ;)
https://www.youtube.com/watch?v=fXpfdq3WYu4

Michał Kuliński

Perełka. Pytają Jennifer: "Jennifer are you know something about Microsoft 95?", Jennifer: "No, I'm still mastering PONG" :)

grski
dziś, 15:03

Ciekawostka: linux 4.19.2 uniemożliwia pracę na dockerze przez pewien bug nie jest możliwe zbuildowanie żadnych obrazów
szybkie rozwiązanie:
echo N | sudo tee /sys/module/overlay/parameters/metacopy
wada jest taka, że trzeba za każdym rebootem od nowa to wklepywać, bardziej permanentne jest dodanie overlay.metacopy=N do parametrów kernela w grubie chociażby

ewentualnie mozna downgrade kernela lub poczekac na upgrade do 4.19.3 lub dalszych - zależy, do którego wejdzie fix

Wrzucam, bo ile ja się z tym namęczyłem...

jackweb

Też musiałem tak zrobić, bo używam Archa, i tam mam 4.19.2.

Aryman1983

Ze złubuntu nie ma tego problemu bo siedzi na jakimś oemowym 18 :-) Jak wrzuci się 19.2 to nvidia pokazuje fucka(pewnie za tego od Linusa) :-)

Pyxis
wczoraj, 19:33

Zwykle gdy przetwarzamy dane, to wygodnie jest operować na tablicach dwuwymiarowych (np. gdy wczytujemy tabele z pliku). Ciekawymi obiektami są tablice maskowane (MaskedArray) w Pythonie. Czasem zachodzi potrzeba zapisania takiego obiektu do pliku. Oczywiście można go zapeklować, ale ja miałem potrzebę zrzucenia takiego obiektu z pominięciem zamaskowanych wierszy. W takim przypadku możemy użyć metody compressed. Problem w tym, że otrzymamy jednowymiarowy obiekt, który burzy nam wielokolumnową strukturę...

Otwórzmy najpierw taki obiekt:

import numpy as np
import numpy.ma as ma
 
tab = ma.arange(1,36).reshape(7,5)
tab.mask = ~np.asarray(tab, dtype=bool)
tab.mask[2] = tab.mask[5] = True

Wygląda to mniej więcej tak:

masked_array(
  data=[[1, 2, 3, 4, 5],
        [6, 7, 8, 9, 10],
        [--, --, --, --, --],
        [16, 17, 18, 19, 20],
        [21, 22, 23, 24, 25],
        [--, --, --, --, --],
        [31, 32, 33, 34, 35]],
  mask=[[False, False, False, False, False],
        [False, False, False, False, False],
        [ True,  True,  True,  True,  True],
        [False, False, False, False, False],
        [False, False, False, False, False],
        [ True,  True,  True,  True,  True],
        [False, False, False, False, False]],
  fill_value=999999)

Metoda compressed wywołana na tab, czyli tab.compressed() da nam nowy obiekt typu ndarray:

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35])

W zasadzie łatwo można to rozwiązać w ten sposób:

tab.data[~tab.mask].reshape(tab.shape[0] - len([_ for i in tab.mask if i.all()]), tab.shape[1])

by dostać:

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25],
       [31, 32, 33, 34, 35]])

Po czym możemy zapisać taki obiekt do pliku tekstowego z zachowaniem struktury. tab.data[~tab.mask] zwraca to samo co metoda compressed. W zasadzie główna sprawa to wyznaczenie poprawnego wymiaru macierzy. Stosowanie maskowanej macierzy ma sens, na przykład kiedy chcemy wyróżnić pewną grupę punktów na wykresie. Oczywiście zastosowań jest więcej.

lion137
2018-11-19 10:18

Coś ostatnio więcej hejtu na PHP niż na JavaScript

Dla równowagi...
#humor

LukeJL

W sumie ma rację ten gostek. JSa zwykle jest za dużo. Ludzie pakują wszystko na stronę, wgrywają paczki z npm bardziej zaciekle niż Ruby'owcy swoje gemy, i potem jest za dużo niż powinno być.

LukeJL

A co do śmiania się z JSa jako języka to droga wolna - są alternatywy (np. Elm, bo TypeScriptu nie liczę, bo to taki sam "syf"), jak ktoś uważa, że czas na zmianę języka, niech zostanie ewangelistą i promuje (albo też: rozwija) jakąś alternatywę do JSa zamiast tylko narzekać