Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Łukasz, dodany: 10.11.2021 08:10, tagi: technologie

Coraz częstszym zjawiskiem jest nanoszenie nadruków na koszulki za pośrednictwem druku sitowego. Okazuje się, że technika ta może zostać zastosowana także w domowych warunkach. Jest to jednak proces, który wymaga od nas zdolności manualnych, jednocześnie konieczne jest poświęcenie stosunkowo długiego okresu czasu. Czy warto zdecydować się na sitodruk w domowych warunkach? Od czego powinniśmy rozpocząć przygotowania do sitodruku? W jaki sposób postępować w dalszej kolejności? Jak wygląda proces drukowania? Aby uzyskać odpowiedzi na te pytania, serdecznie zapraszamy do lektury poniższego artykułu, który z pewnością rozwieje wszelkie wątpliwości czytelników.

Czy warto zdecydować się na sitodruk w domowych warunkach?

Osoby, które uwielbiają pracę manualne, z pewnością wykorzystają metodę sitodruku w domu. Okazuje się, że nie musi być to wcale przykry obowiązek- niekiedy tworzenie nadruków jest ogromną frajdą dla majsterkowiczów. Warto jednak zdawać sobie sprawę z tego, że wówczas technika nie jest tak wydajna, jakbyśmy zdecydowali się na usługi profesjonalistów. Przede wszystkim drukarki znajdujące się w wyspecjalizowanych firmach gwarantują wysoką jakość nadruku, co dla wielu osób jest kwestią priorytetową. Nie da się ukryć, że zdecydowana większość osób wybiera takie rozwiązanie ze względu na ponadprzeciętną trwałość. Wykonując tego typu czynności na własna rękę nie zawsze otrzymamy satysfakcjonujący nas rezultat. Dodatkowo musimy liczyć się z tym, że nadruk może być podatny na ścieranie i spieranie. Warto wspomnieć, że profesjonalny sitodruk umożliwia uzyskanie wyraźnych konturów, a także najmniejszych szczegółów. W domowych warunkach większość z nas nie będzie w stanie zrobić takie szablonu. Pomimo wszystko w mieszkaniu także jesteśmy w stanie nałożyć grafikę na koszulkę, o ile będziemy cierpliwi i postaramy się możliwie najbardziej jak jest to możliwe.

Od czego powinniśmy rozpocząć przygotowania do sitodruku?

Zanim rozpoczniemy jakiekolwiek czynności związane z sitodrukiem, w pierwszej kolejności będziemy potrzebować cztery drewniane listewki. Ich wymiary powinny wynosić 50 cm x 4 cm x 4 cm. Następnie zbijamy całą konstrukcję w prostokąt, dzięki czemu powstanie estetyczna rama. Jeśli szukamy sposobu na oszczędzenie czasu, wówczas alternatywnym rozwiązaniem jest wykorzystanie gotowej już ramki na obraz- może być nawet aluminiowa, również sprawdzi się doskonale. Warto jednak zdawać sobie sprawę z tego, że przymocowanie siatki ze zszywaczem tapicerskim będzie nieco trudniejsze. Sito jest konieczne, aby móc przecisnąć farbę. Swoją uwagę powinniśmy zwrócić na oczka- im jest ich mniej, tym mniejsza będzie rozdzielczość i odwrotnie. Dlatego też, jeśli zależy nam na wyraźnym nadruku, wówczas powinniśmy zdecydować się na stosunkowo dużą ich liczbę. Do domowych nadruków gęste sito jest uznawane za niezbędne i stosowane jest bardzo rzadko. Nie jesteśmy w stanie dokonać wyraźnego szablonu bez specjalistycznych urządzeń, o czym nie powinniśmy zapominać. Siatkę możemy bez większych problemów uzyskać w sklepie dla plastyków. Alternatywnym rozwiązaniem, które także okaże się skuteczne, są pończochy. Idealnie sprawdzą się do drukowania w domowych warunkach. Sito powinno być napięte równomiernie- może zostać delikatnie zmoczone, co powoduje jeszcze lepsze napięcie.

W jaki sposób postępować w dalszej kolejności?

Kiedy sito zostało już przygotowane, wówczas musimy zaopatrzyć się w emulsję. Smarujemy nią obie strony siatki. Jej zakup nie jest problematyczny- wystarczy odwiedzić specjalne sklepy plastyczne lub wykonać ją na własną rękę. Atrament to gwarancja tego, ze nieco łatwiej dostrzeżemy wypłukiwanie się emulsji. Teraz pozostawiamy sito na pewien czas w ciemnym pomieszczeniu, aż jego powierzchnia wyschnie. Najtrudniejszym etapem jest stworzenie wzoru. W tym przypadku kluczowe jest posiadanie zdolności manualnych. Wycinamy szablon z czarnego arkusza papieru i nakładamy na sito od spodu. Teraz przyklejamy określony wzór taśmą samoprzylepną przezroczystą. Następnie naświetlamy siatkę za pomocą kilku silnych żarówek- cały proces powinien trwać nie więcej niż kilkanaście minut.

Jak wygląda proces drukowania?

Przed nami ostatni etap, czyli drukowanie. W jakim celu robione było naświetlanie? W ten sposób utwardza się emulsja i co ważne- staje się nierozpuszczalna w wodzie. W dalszej kolejności odklejamy szablon i myjemy fragmenty, które się nie naświetliły. Robimy to poprzez zanurzenie siatki w ciepłej wodzie. Dzięki temu naświetlone miejsca się wypłuczą, natomiast pozostałe się utrwalą. Następnie pod sitko podstawiamy tkaninę. Nakładamy farby od góry i przeciskamy je raklą, która musi być szersza od wzoru. Pamiętajmy o specjalnych farbach- muszą być one przeznaczone do tego, aby zadrukować tkaniny. Nie zalecamy korzystania ze zwykłych farb, bowiem ich wytrzymałość będzie znacznie mniej satysfakcjonująca. Sitka można regenerować zanurzając je w specjalnie przygotowanym roztworze wodnym wodorotlenku sodu.

Artykuł Jak samemu zrobić sitodruk? pochodzi z serwisu Mordawski.

Autor wpisu: Łukasz, dodany: 07.06.2021 09:04, tagi: technologie

Detektory ruchu są szeroko stosowane w systemach bezpieczeństwa do wykrywania wtargnięć osób niepowołanych, a także do automatyzacji oświetlenia i technologii klimatycznej w mieszkaniach i biurach. Analitycy spodziewają się, że ich wykorzystanie będzie rosło o 15% rocznie. Jednocześnie największy wzrost spodziewany jest w Europie w zakresie ochrony przed intruzami oraz w ramach automatyki domowej. Jednym z najpopularniejszych urządzeń w zakresie ochrony jest detektor ruchu działający na podczerwień.

Jak reagują detektory ruchu?

Czujnik ruchu na podczerwień to bezkontaktowe urządzenie elektroniczne, które służy do ustalania ruchu obiektów w pomieszczeniu poprzez reagowanie na wahania natężenia promieniowania cieplnego w tle, które jest właściwe dla każdego żywego stworzenia. Urządzenia doskonale sprawdzają się w pomieszczeniach biurowych i przemysłowych, budynkach mieszkalnych, centrach handlowych, a także w wielu innych obiektach.

Jak działa czujnik ruchu na podczerwień?Jak działa czujnik ruchu na podczerwień? Takie czujniki reagują na zmiany temperatury w obszarze działania. Oznacza to, że reagują na promieniowanie cieplne ludzi, zwierząt, ruchomych urządzeń, których temperatura różni się od temperatury tła. Zasada działania takiego czujnika ruchu polega na rejestracji fal podczerwonych, czyli promieniowania cieplnego. A potem jest to kwestia technologii: sygnał odbierany z elementu piroelektrycznego jest wzmacniany, przetwarzany na cyfrowy, podawany do przekaźnika, który otwiera styki i Alarm! Reagować! Zatrzymanie sprawcy! Czujniki podczerwieni działają na linii wzroku, czyli wtedy, gdy między obiektem a czujnikiem nie ma przeszkód. Jednocześnie są dostatecznie wrażliwe na nawet niewielkie zmiany temperatury, co pozwala na precyzyjną regulację. Dzięki przetwarzaniu mikroprocesorowemu, które poddaje się każdemu przychodzącemu sygnałowi, zapewnia najdokładniejsze sprawdzenie ruchu, a także masy obiektów, co pozwala niemal całkowicie wyeliminować prawdopodobieństwo fałszywych alarmów sprzętu. Najważniejsze jest, wyregulowanie czujnika ruchu na podczerwień tak, aby nie reagował na koty i psy, jeśli nie jest to specjalnie przewidziane. Lub, przy odpowiednich ustawieniach, światło włącza się i wyłącza po pewnym czasie. Generalnie możliwości zastosowania takich czujników są bardzo szerokie.

Najważniejsze cechy detektorów ruchu na podczerwień

Wewnątrz sprzętu znajdują się specjalne czujniki, które są najczęściej używane, jako elementy piroelektryczne, a przed nimi zamocowane są soczewki Fresnela. To z ich pomocą ustala się poziom promieniowania podczerwonego. Większość nowoczesnych modeli czujników ruchu na podczerwień charakteryzuje się następującymi cechami:

  • Potrafi wykryć ruch w odległości około 20 m od miejsca instalacji.
  • Zazwyczaj poziomy kąt widzenia wynosi około 110.
  • Osoba może samodzielnie regulować czujniki czułości.
  • Istnieje możliwość indywidualnego dostosowania ilości generowanych impulsów, dzięki czemu urządzenia przystosowane są do pracy nie tylko w stabilnym, ale także niestabilnym środowisku.
  • Łatwość instalacji i ustawień.
  • Urządzenia wyróżniają się zwartą formą i nowoczesnym designem, dzięki czemu świetnie sprawdzą się w niemal każdym wnętrzu.
  • Specjalna technologia montażu czujników ruchu na podczerwień umożliwia ich zainstalowanie na każdym rodzaju powierzchni.
  • Istnieją wskaźniki LED, które można łatwo wyłączyć w razie potrzeby.
  • W większości przypadków urządzenia nie reagują na przypadkowe ruchy w chronionym obszarze.
  • Istnieją specjalne zabezpieczenia, które zapewniają niezawodną ochronę czujnika przed uszkodzeniami mechanicznymi.
  • Zapewniona jest analiza sygnału kilku elementów czujnika, co pozwala wykluczyć wystąpienie fałszywych alarmów.
  • Automatyczne zapewnienie kompensacji gwałtownych wahań temperatury powietrza w pomieszczeniu.

Dzięki doskonałemu działaniu czujnika ruchu na podczerwień możliwe jest niezawodne zabezpieczenie pomieszczeń przed intruzami. Jest to jeden z najpopularniejszych typów urządzeń do systemów bezpieczeństwa.

Funkcje i kryteria wyboru detektorów ruchu

Parametry, według których dobierany jest czujnik ruchu na podczerwień, określają jego właściwości techniczne. Ważne jest, aby ocenić, jakie wskaźniki są potrzebne dla urządzenia, które działa w domu, poza domem lub na otwartej przestrzeni:

  • W przypadku dużych pomieszczeń lub dziedzińca wybiera się urządzenia z dużym obszarem wykrywania. Proste modele o zasięgu 10, 6 i 4 m kupuje się do małych pomieszczeń lub na klatce schodowej.
  • W przypadku salonów odpowiednie są opcje z niską ochroną przed wilgocią. Pomieszczenia zewnętrzne lub mokre (baseny, szpitale) wymagają produktów o wysokim IP.
  • Jeśli urządzenie ma być montowane na ścianie, lepiej kupić model z zabezpieczeniem przed włamaniem. W przeciwnym razie, poruszając się przy ścianie intruz będzie mógł wejść do domu.

Poziom czułości czujnika ruchu na podczerwień określa, jak wolne i małe ruchy może wychwycić. Aby zabezpieczyć mieszkanie przed złodziejami lub włączyć oświetlenie w pomieszczeniu, gdy do niego wejdą, jest wystarczająco dużo nowoczesnych urządzeń. Czułe czujniki montowane są w magazynach, w których przechowywane są drogie lub niebezpieczne produkty.

Artykuł Jak działa czujnik ruchu na podczerwień? pochodzi z serwisu Mordawski.

Autor wpisu: matipl, dodany: 26.04.2021 15:56, tagi: internet, php

W zasadzie większość z nas ma stały adres IP, najczęściej zmienia się tylko w przypadku gdy nasz router ponownie nawiązuje połączenie z usługodawcą (ISP). W takiej sytuacji, np. w warunkach domowych, aż pragnie się wystawić na świat np. album zdjęć lub inne rzeczy, których nie chcemy umieszczać bezpośrednio na serwerach firm trzecich (w tzw. chmurze). Tylko jak przekazać link innym? Przecież za każdym razem nie będziemy podawać czegoś w stylu http://125.130.125.2. Po pierwsze ponieważ jutro możemy mieć już inny publiczny adres IP nadany przez ISP (np. modem się zrestartował), a po drugie łatwiej zapamiętać http://home.domena.pl .

DDNS – zewnętrzni usługodawcy

Skonfigurowanie subodmeny to rzecz prosta. Pozostaje inna kwestia – jak zautomatyzować proces, aby adres home.domena.pl zawsze kierował na naszą domową maszynę? Nic prostszego – możemy wykorzystać DDNS / DynDNS / dynamiczny DNS. Proces polega na tym, że wydzielamy z naszej domena.pl subdomenę, która ma inny TTL (czas odświeżania) i zarządzamy samą domeną oddzielnie (co też umożliwia lepszą kontrolę pod względem bezpieczeństwa). Możemy wykorzystać darmowe serwisy oferujące usługę DDNS, gdzie dostaniemy subdomenę w ramach ich domeny. Z naszej strony pozostaje ustawić cykliczną operację (cron) na wysłanie zapytania do API celem aktualizacji wpisu DNS dla subdomeny.

Taką usługę oferuje chociażby FreeDNS. Rejestracja jest bardzo prosta, po wszystkim pozostaje nam wywołanie przekazanego URI z tokenem naszej subdomeny w naszej sieci lokalnej (router/serwer/etc):

[~] $ curl https://sync.afraid.org/u/CyTXMbtq5cPnLjEg5vKHTPDE/
Updated demo.freshdns.com from 107.170.238.X to 50.23.197.94

Jeśli posiadacie własną domenę i korzystacie z gotowego panelu do zarządzania domeną to często jest możliwość skonfigurowania bezpośrednio tam DDNS. Taką usługę oferuje chociażby OVH.

DDNS – własne rozwiązanie

Ale może niektórzy z Was lubią posiadać większą kontrolę nad domeną (specyficzne rekordy) niż oferuje firma, w której opłacacie domenę. Posiadacie np. własną instancję BIND, gdzie trzymacie kilka domen (prostą konfigurację BIND opisałem w 2010 roku) i chcielibyście wykorzystać ten serwer nazw do DDNS. Sam tak właśnie pomyślałem, gdy okazało się, że na jednym z interfejsów zewn. posiadam dość zmienną adresację.

DDNS – modyfikacja w BIND

Zacznijmy od zmiany w samym BIND. Powiedzmy, że posiadamy domenę domena.pl i jej strefa u nas wygląda następująco:

$TTL 86400
$ORIGIN domena.pl.
@ IN SOA dns1.domena.pl. root.domena.pl. (
        2010111801 ;; serial
        2H         ;; refresh
        1H         ;; retry
        7D         ;; expire
        1D         ;; TTL
        )
@               IN      NS      dns1.domena.pl.
@               IN      NS      dns2.domena.pl.

@               IN      MX      10 mail.domena.pl.

@               IN      A       XXX.XX.XX.X
dns1            IN      A       XXX.XX.XX.X
dns2            IN      A       YYY.YY.YY.Y

www             IN      CNAME   @
mail            IN      CNAME   @
ftp             IN      CNAME   www

I gdy chemy dodać dodać naszą domową/lokalną subdomenę tworzymy dodatkową pozycją:

home            IN      A       ZZZ.ZZ.ZZ.Z

Ale w naszym przypadku dodajemy home.domena.pl z informacją, że jest zarządzana osobno:

home            IN      NS      dns1.domena.pl.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: JoShiMa, dodany: 22.03.2021 20:01, tagi: sql

Framework Django daje możliwość ręcznego budowania migracji. Jest to bardzo przydatne jeśli potrzebujemy dodać do aplikacji jakieś dane na początek. Ja wykorzystałam ostatnio tę możliwość do skopiowania danych ze starej do nowej wersji aplikacji. Do tej operacji potrzebna mi była jeszcze umiejętność łączenia się z dwiema bazami jednocześnie, oraz uruchamiania zapytań SQL, czyli pracy na ... Czytaj dalejDjango – kopiowanie danych między projektami, czyli bardziej zaawansowane migracje.

The post Django - kopiowanie danych między projektami, czyli bardziej zaawansowane migracje. first appeared on Z notatnika deweloperki.

Autor wpisu: Wojciech Sznapka, dodany: 01.11.2020 23:10, tagi: php

Every API fails at random points of time and that’s unavoidable. Sadly, it’s not taken care correctly during integrating third party API’s. I see it very often. „Hey there! But I’m using try-catch and handle errors, sometimes even I log them to the file…” one might say. Well, so what? What happens when it fails and you miss data which needed to be fetched during the daily ETL process? Or your business partner misses information if you send data to their API and for some reason, it fails. What then? As long as you use cron and have output emailed to some mailbox, which is being monitored – you’ll notice. Maybe you use Sentry or any other application monitoring/error tracking software and you’ll spot some anomaly. But imagine having dozens of such jobs running on a daily basis – it’s easy to lose track.

I think you get my point now. API errors occur quite often. Most of them are due to temporary service unavailability, caused mainly by having too much traffic at the moment. The simple solution is to retry. In this post, I’ll show how to easily implement efficient retry mechanism.

According to Wikipedia

Exponential backoff is an algorithm that uses feedback to multiplicatively decrease the rate of some process, in order to gradually find an acceptable rate.

In case, which I’ll explore, it’s a way to retry a piece of code, in case of an exception occurrence. It will delay every attempt with exponential pause, according to the equation (2^attempt) * baseTime

Below example uses PHP’s backoff library. Similar libs can be found in Python, node.js and probably any language of choice.

use GuzzleHttp\Exception\RequestException;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Processor\UidProcessor;
use STS\Backoff\Backoff; # nothing to do with sts.pl ;)

$log = new Logger('x');
$log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));
$log->pushProcessor(new UidProcessor());

$client = new GuzzleHttp\Client();
// below API fails 60% of time
// always fail first call in 5 minutes timespan
$url = 'https://sznapka.pl/fakeapi.php';
$log->debug(sprintf('Fetching from %s', $url));

$backoff = new Backoff(10, 'exponential', 10000, true);
$result = $backoff->run(function() use ($client, $url, $log) {
    try {
        $res = $client->request('GET', $url);
        $data = json_decode($res->getBody(), true);
        $log->info(sprintf('Got response, %d items', count($data)));
    } catch (RequestException $e) {
        $log->error($e->getResponse()->getBody());
        throw $e; // causes backoff lib to retry
    }
});
$log->debug('All done');

When you run it with php ./console.php you’ll get:

[22:29:15.649] x.DEBUG: Fetching from https://sznapka.pl/fakeapi.php [] {"uid":"6b3d944"}
[22:29:15.759] x.ERROR: API failed, what a surprise! [] {"uid":"6b3d944"}
[22:29:15.832] x.ERROR: API failed, what a surprise! [] {"uid":"6b3d944"}
[22:29:16.268] x.INFO: Got response, 5 rows [] {"uid":"6b3d944"}
[22:29:16.269] x.DEBUG: All done [] {"uid":"6b3d944"}




As you can see, the backoff library retries with exponential intervals until our wrapped closure doesn’t throw an exception. It has set 10 retries and waitCap 10 seconds, so will stop processing whenever one of those conditions appear. I’ve also defined jitter parameter to true to spread out retries and minimize collisions.

Last but not least – always log your external API usage. It will help you a lot during the debugging phase. Also, it’s very handy to use UidProcessor which puts an uid (per session) into logger’s context. It allows filtering logs from given invocation, which is especially helpful with overlapping calls or concurrent usage.

Autor wpisu: Wojciech Sznapka, dodany: 11.10.2020 21:33, tagi: sql

TL;DR: commarize.com changes multi-line input into the comma-separated output.

Full story: around 6 years ago I created a simple tool to speed up my daily job. The problem was – our Affiliate Manager has been giving me excel file with one column – the IDs of customers to change their affiliate association in the database. There was a simple query behind it:

UPDATE clients
SET affiliate_id = 100001
WHERE id IN (<here goes comma separated list of clients>);

Of course, you can do that somehow in Excel. I often pasted that column to VIM and put the commas using a macro. But that was becoming a hassle, when I’ve been asked a couple times per week, sometimes a day.

I decided to create a simple tool, which looked ugly, but worked just fine.

I’ve changed job since then, but still use commarize.com almost every day. I’ve seen people in my teams having the same problem so I’ve given them the tool as well. Today is a good time to open-source it and make it slightly prettier, thanks to Tailwind CSS.

I’ve also pushed source to the GitHub, feel free to use it your own way or submit Pull Request or Issue: https://github.com/wowo/commarize

Autor wpisu: Wojciech Sznapka, dodany: 24.09.2020 21:26, tagi: php

Apache Kafka has became an obvious choice and industry standard for data streaming. When streaming large amounts of data it’s often reasonable to use AVRO format, which has at least three advantages:

  • it’s one of most size efficient (compared to JSON, protobuf, or parquet); AVRO serialized payload can be 10 times smaller than the JSON equivalent,
  • enforces usage of a schema,
  • works out of the box with Kafka Connect (it’s a requirement if you’d like to use BigQuery sink connector).

Let’s see how to send data to Kafka in AVRO format from PHP producer, so that Kafka Connect can parse it and put data to sink.

I assume you know the basics of AVRO and Schema Registry, but if not – let me know in the comments, I’d be happy to help with setting up Schema Registry! Footnote: the easiest way is it, is to use Confluent’s official Docker image and deploy it on Kubernetes.

In order to use PHP producer which will serialize payloads in AVRO, we need to send it in a particular „envelope”, which contains schema ID. This way Kafka Connect will know which schema should be retrieved from Schema Registry.

Let’s consider, that our PHP Kafka producer will send simple payload:

$data = [
  'time' => '2020-09-24 20:45:00',
  'level' => 'info',
  'channel' => 'main',
  'message' => 'Some log entry has been produced',
];

First of all, you need to create an AVRO schema for that. You can get one by using number of tools available online, like this.

Our AVRO schema will look like this:

$schema = <<<SCHEMA
{
  "name": "LogEntry",
  "type": "record",
  "namespace": "pl.sznapka",
  "fields": [
    {
      "name": "time",
      "type": "string"
    },
    {
      "name": "level",
      "type": "string"
    },
    {
      "name": "channel",
      "type": "string"
    },
    {
      "name": "message",
      "type": "string"
    }
  ]
}
SCHEMA;

Next step is to register our AVRO schema in Schema Registry and obtain its ID. You can either call Schema Registry API directly or use PHP library flix-tech/confluent-schema-registry-api (which I recommend).

Note – you should register your schema under Kafka topic name with suffix ‚-value’

$kafkaTopicName = 'logs';
$subject = $kafkaTopicName . '-value';
$schemaRegistry->register($subject, \AvroSchema::parse($schema));

Once your schema is in the Schema Registry you need to retrieve ID for your subject:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.