Regex i duży plik - jak ugryźć to w javie?

Wstęp

Dla jasności - mówimy o pliku rozmiaru co najmniej 1 GB. Załóżymy, że mamy sobie taki plik, wyglądający o tak:

abbbbbbbbbbbb....bbbbbbbbc

"b" powtarzamy, aż plik osiągnie 1 GB. Chcielibyśmy znaleźć liczbę wystąpień wzorca "ab*c". Oczywista oczywistość - wczytanie całego pliku do pamięci raczej nie jest dobrym pomysłem. Żarówką, który najszybciej mi zapaliła się (i najszybciej zgasła) była próba własnoręcznego zaimplementowania parsera wyrażeń regularnych.

C# - kolorowanie składni

Wstęp

Napiszmy bibliotekę, która będzie kolorowała nam składnie jakiegoś języka i zwracała widok jako html. Założenia

  • Chcemy umożliwić definiowanie własnych schematów kolorowania
  • Chcemy umożliwić zmienianie skórki

Jako, że nie ma być to zaawansowany system (prościutki raczej) oprzemy jego silę na wyrażeniach reguralnych. Algorytm będzie wyglądał mniej-więcej tak:

  • Załadujemy z definicji języka wszystkie wyrażenia regularne - każdy będzie miał swój priorytet.
  • Poszukamy w tekście wzorców

C# ciąg dalszy - układ logiczny i trochę obiektowości

Rozwiążmy następujące zadanie: Mamy dany układ bramek logicznych, np:

Naszym zadaniem jest obliczenie wartości na wyjściu (czyli stan przewodu P8) oraz czas obliczania - bo świat nie jest idealny i bramka logiczna potrzebuje "trochę" czasu, żeby "wypluć" wartość na wyjście. Przed przystąpieniem do kodzenia, założenia:

  • Przygotujemy bramki OR (opóźnienie 10j) oraz AND (5j)
  • Przygotujemy fabrykę, która będzie nam tworzyła elementy układu

C#: Dependency Injection - mała rozbudowa

Jako, że oryginalny post został ciepło przyjęty (klik! ) to postanowiłem lekko rozbudować projekt, aby rzeczywiście mógł być używany w prostych projektach (wystarczy, że jedna osoba by to zrobiła - sukces!)

Zabezpieczenie się przed tworzeniem instancji interfejsu/klasy abstrakcyjnej

Zabezpieczenie to jest prościutkie, wymaga dodania takiego oto kodu w metodzie Build (ContainerBuild) przed dodaniem nowej pary klucz-wartość do fabryki:

C#: Dependency Injection - własna fabryka IoC

Każdy z nas prędzej czy później spotka się ze wstrzykiwaniem zależności. Cytując wikipedię - jest to wzorzec projektowy i wzorzec architektury oprogramowania polegający na usuwaniu bezpośrednich zależności pomiędzy komponentami na rzecz architektury typu plug-in (źródło ).

Jak to się je w praktyce?

Wyobraźmy, sobie że mamy wielomodułowy program.

Piszemy trochę bardziej złożony kalkulator w C#.NET

Po przeczytaniu wpisu matrix012345-a Piszemy prosty kalkulator w C#.NET - moja wersja postanowiłem pójść jeszcze troszeczkę o krok dalej. Zamierzam się skupić bardziej na logice niż GUI - dlatego kalkulator będzie działał w konsoli. Całość natomiast będzie skompilowana do assembly w postaci dll, którą będzie można wykorzystać w innych projektach albo rozbudować. Do tego mój prosty kalkulator będzie działa na bazie funkcji - tj.