Paweł Talacha
software developer
RSS
  • Home
  • O mnie
  • Blog

kwi 6 2012

ViCMS 2.1.1 – Kolejna wersja świąteczna

Wymyśliłem sobie, że będę to robił w każde święta. A co! :P

Chciałem, aby ta wersja tylko i wyłącznie wprowadzała poprawki. Miała być najbardziej dopracowana pod względem działania istniejących już elementów ze wszystkich wersji, które pojawiły się do tej pory. Mam nadzieję, że się udało, bo od teraz będę już tylko psuł. ;)

Z listą zmian można zapoznać się tam, gdzie zwykle.

Ponadto dokumentacja użytkownika została w końcu uzupełniona, można więc sobie poczytać trochę i pooglądać obrazki umieszczone na stronach poświęconych funkcjom ViCMS.

Pozostaje mi tylko życzyć wszystkim Wesołych Świąt! :)

By Paweł Talacha • ViCMS 0 • Tags: vicms

gru 23 2011

ViCMS 2.1 – Wersja świąteczna ;)

vicms2.1star_small

Dziś wyjątkowa aktualizacja ViCMS. Po pierwsze – świąteczna. :) Po drugie – dodanych zostało kilka rzeczy usprawniających działanie systemu i poprawiających błędy. Jest też trochę nowości, a są to:

  • Zagnieżdżone kategorie aktualności – Pozwalają na lepsze grupowanie wpisów. Numerek w nawiasie obok nazwy mówi teraz o liczbie aktualności danej kategorii, a także wszystkich kategorii podrzędnych. Ponadto nazwa kategorii znajduje się teraz w stopce każdego wpisu, skąd informacja o dalszym ciągu tekstu (o ile taki istnieje) przeniesiona została na koniec treści pierwszej jego części. Będzie także umieszczana na końcu skrótów wiadomości w kanale informacyjnym.
  • Panele – Mogą zawierać dowolną treść, formatowaną identycznie jak sam wpis. Widoczne są na pasku bocznym. Mogą być wyświetlane poniżej menu witryny – na samym dole, powyżej – na samej górze, lub tylko na górze strony głównej witryny.

Działanie tych funkcji przedstawia poniższy film. Był on tworzony w trakcie pisania programu – widać na nim drobny błąd, który został później wyeliminowany. Film zawiera też paskudną reklamę. ;)

Ponadto:

  • Panele stron – Zasada działania jest identyczna, jak w przypadku paneli ogólnych, dotyczą jednak tylko konkretnej strony. Tworzone są przy dodawaniu lub edycji strony i mogą pełnić rolę dodatkowego dla niej menu.
  • Opcjonalny przycisk „+1” poniżej aktualności pozwalający na rekomendowanie treści wpisów w serwisie Google+.
  • Ulepszone funkcje odpowiedzialne za formatowanie i sprawdzanie poprawności zagnieżdżenia znaczników BBcode, dzięki czemu wykrywana jest większa ilość błędów, a jednocześnie zwiększona została elastyczność poprzez umożliwienie stosowania dowolnej kolejności zagnieżdżeń w ramach dopuszczalnej w danym momencie.
html5_logo_512
  • Dokumenty generowane przez system są teraz zgodne z HTML5, który zastąpił poprzednio używany standard opisu – XHTML 1.0 Transitional. Dzięki temu możliwe było m.in. zrezygnowanie z negocjowania typu zawartości lub osadzania obiektów flash z użyciem SWFObject, aby zapewnić zgodność i poprawne wyświetlanie w przeglądarkach z grupy Internet Explorer. Poziom użycia nowych elementów języka znaczników HTML5 jest znikomy z powodu śladowej ich obsługi przez IE8. Starsze wersje oraz przeglądarki z włączonym widokiem zgodności będą na samej górze wyświetlały komunikat o możliwości niepoprawnej prezentacji strony.
  • Wymienione emotikony i zwiększona ich ilość.
  • Nowa, trzecia już skórka w paczce. Blue dostosowuje się do szerokości okna przeglądarki, nie ładuje także zbyt wielu elementów z plików graficznych. Założeniem było stworzenie „lekkiej” szaty graficznej, a więc zaokrąglone rogi nie działają w IE8 i starszych. :P

Co do błędów – niektóre z nich:

  • Album nie był zapisywany w bazie, jeżeli szerokość wskazanego przy jego edycji lub tworzeniu zdjęcia była mniejsza niż wymagana szerokość miniaturki.
  • Zapis długich treści (bliskich limitu długości) zawierających emotikony mógł powodować błąd – długość była sprawdzana przed, a nie po zamianie znaczników BBcode na HTML.
  • Nie dało się dodać administratora z pełnymi uprawnieniami (super administratora).
  • Grafika PNG na miniaturkach albumów i zdjęć w galerii traciła przezroczystość.
  • Część administracyjna „wystawała poza ekran” w rozdzielczości 1024×768.
  • Brakowało stronicowania na liście albumów w galerii oraz na liście zdjęć.
Zobacz pełną listę zmian
Pobierz najnowszą wersję

Korzystając z okazji – wszystkim odwiedzającym tę stronę chciałbym złożyć życzenia radosnych Świąt Bożego Narodzenia oraz uśmiechu i życzliwości na każdy dzień Nowego Roku. :)

By Paweł Talacha • ViCMS 0 • Tags: vicms

paź 22 2011

ViCMS 2.0.12 – Wyszukiwarka

Wyszukiwarka pozwalająca na znalezienie interesującej treści w obrębie witryny to funkcja, którą ViCMS posiada prawie od początku swojego istnienia. Była ona wtedy wykonana na szybko, jako prowizoryczna – proteza ostatecznej wersji. Zasada działania była tak prosta, że już prostsza być nie mogła. ;) Przeszukiwała treść pod kątem wystąpienia danej frazy w sposób dosłowny (tak, jak została wprowadzona) – bez żadnej analizy. Jak powszechnie wiadomo, prowizorki są najtrwalsze – toteż działała w prawie niezmienny sposób po dziś dzień stając się najsłabszym elementem systemu.

Wyszukiwarka w takiej postaci nie spełniała swojej funkcji (była mało skuteczna) i nie mogłem już na nią patrzeć. :P Czas więc najwyższy było napisać ją bardziej porządnie. Nowy sposób przeszukiwania treści analizuje aktualności, strony i galerię pod kątem wystąpienia poszczególnych elementów frazy, sortując wyniki w grupach według trafności (procent zawartości frazy) i powtarzalności (taka prawie ilość wystąpień ;)). Ale gdyby ktoś jeszcze marudził – zawsze może zaznaczyć pole obok i zmusić silnik Google do wykonania brudnej roboty.

Pozostałe zmiany w wersji 2.0.12

  • Obrazki w treści stron i aktualności mogą być teraz również umieszczane po lewej lub po prawej stronie tekstu, który będzie je „opływał”. Służą do tego odpowiednio znaczniki img2 iimg3. Należy pamiętać, że sekcja taka musi być zamknięta za pomocą clear i /clear. W przeciwnym razie może zrobić się mały bałagan. Dlatego też funkcję zaznaczam jako „dla użytkowników zaawansowanych”.
  • Skórki mogą posiadać teraz ikonkę w formacie PNG – plik icon.png. Oczywiście Internet Explorer starszy niż 9 ich nie obsługuje, więc załaduje sobie plik favicon.ico, o ile taki będzie znajdował się w folderze. Pozostałe przeglądarki, użyją tego pierwszego pliku. Zalety? Ładniej się prezentuje, kolor 32-bit, przezroczystość, w większej rozdzielczości (ponad 200×200) np. Opera używa jako miniaturki w SpeedDial, itp.
  • Drobne poprawki w skórkach i aktualizatorze.

– Pobierz nową wersję –

Jeżeli nic dziwnego się nie przytrafi i będę miał znowu napad na dłubanie w PHP to kolejna wersja będzie już prawdopodobnie z serii 2.1 z czymś bardzo fajnym. :)

By Paweł Talacha • ViCMS 0 • Tags: vicms

wrz 18 2011

ViCMS 2.0.11 – Lepsze formatowanie treści

System zarządzania treścią, jak wskazuje nazwa, powinien przede wszystkim umożliwiać swobodne kształtowanie sposobu prezentacji tekstu. Brak kompletnego formatowania, w skład którego wchodzi kolorowanie tekstu, możliwość powiększania czy zmniejszania czcionki oraz wstawianie wykazów był wadą ViCMS. Był. :)

Co w nowej wersji?

  • Możliwość tworzenia wykazów zawierających elementy uporządkowane (ponumerowane) lub nieuporządkowane (wypunktowane – jak ten mruga) Wygląd można sobie doprecyzować w pliku skórki używając klas – odpowiednio list1 i list2. Numeracja w pierwszym przypadku może zaczynać się od konkretnej wartości, jeśli znacznik rozpoczynający będzie miał postać np. list1=6. Listy mogą być zagnieżdżone.
  • Kolorowanie tekstu. Na dzień dzisiejszy tylko przeglądarka Opera obsługuje input type color, więc w celu umożliwienia wybierania barwy użyty został komponent JSColor autorstwa Jana Odvárko (screen poniżej). Nie było sensu pisania czegoś od podstaw, skoro istnieje dobre i fajne rozwiązanie. Został więc włączony do systemu.
Wybór koloru
Wybór koloru
  • Zmiana rozmiaru czcionki – za pomocą znacznika size=wartość. Nie ma do tego przycisku, bo raczej rzadko przychodzi potrzeba, żeby zmieniać określony w skórce rozmiar, ale opcja jest.
  • Odtwarzacz filmów z YouTube można już przełączać w tryb pełnoekranowy bezpośrednio ze stron. :P
  • Dla wygody na dole aktualności zostały dodane strzałki do nawigacji.

Oprócz tego poprawki błędów, które udało się zauważyć od ostatniej wersji:

  • Nie dało się dołączyć stron do menu (zepsułem chyba w przedostatniej wersji mruga)
  • Przy dodawaniu plików do stron i aktualności powrót z kategorii plików wyświetlał komunikat braku upoważnienia.
  • Jeżeli istniały jakieś strony, a wyłączona została ich obsługa w obrębie całej witryny, zostawały one w menu górnym.
  • Brak odstępu pomiędzy częściami aktualności (widoczną od razu i po kliknięciu na „czytaj dalej”) w podglądzie.
  • Numerki w listingu kodu wyświetlały się brzydko przy większej liczbie linii niż 9.
  • Tytuł i podtytuł witryny nie znajdowały się pomiędzy znacznikami h1 w przypadku, gdy menu było powyżej (na samej górze) – np. dla skórki infrared.

– Pobierz nową wersję –

By Paweł Talacha • ViCMS 0 • Tags: vicms

sie 9 2011

Opera vs. Google

Od niepamiętnych czasów niektóre usługi Google nie działają w 100% poprawnie w przeglądarce Opera. Czasami faktycznie bywa to problem Opery, ale błędy są zwykle dość szybko poprawiane i od momentu zgłoszenia znikają wraz z pojawieniem się kolejnej wersji. Nawet jeśli Opera zachowuje się prawidłowo, a błąd jest po stronie serwisu WWW, jej twórcy próbują obejść problem stosując tzw. łatki. Czasem łatki są używane doraźnie, jeśli trzeba trochę poczekać na poprawkę w silniku. Po jej wprowadzeniu łatka jest usuwana.

Ale… Niestety mało kto wie (psiocząc na Operę), że często błędy powoduje umyślnie samo Google. Swego czasu nawet kwestię poruszył Paweł Wimmer wysyłając do Google Polska list otwarty w tej sprawie. Skąd pewność, że umyślnie?

Otóż Opera, chyba mniej więcej w tamtym okresie, wprowadziła ciekawą funkcję pozwalającą jej na udawanie innej przeglądarki. Wystarczy gdzieś na otwartej stronie kliknąć prawym przyciskiem myszy, z menu kontekstowego wybrać opcję „preferencje witryny”, następnie zakładkę „sieć” i tam, na dole ustawić udawanie. Po zatwierdzeniu i odświeżeniu strony zdarza się cud! ;) W znacznej większości przypadków serwisy działają poprawnie. I nagle okazuje się, że z Opera radzi sobie świetnie i nie ma problemów z wyświetlaniem żadnego elementu witryny.

Opera preferencje

Praktyka blokowania Opery przez Google mimo upływu lat w ogóle się nie zmieniła. Metody stają coraz trudniejsze od obejścia. Wystarczy spojrzeć na najnowsze dziecko firmy – serwis społecznościowy Google+. Maskowanie w tym przypadku nie wystarczyło, aby górne menu działało poprawnie (tylko zaczęło się wyświetlać), ale jak się okazuje po dodaniu „AppleWebKit/535.1” do user agent (ciągu znaków identyfikującego przeglądarkę) – serwis nagle zaczyna działać zgodnie z oczekiwaniami. Wystarczą trzy kroki:

  1. W pasku adresu wpisujemy: opera:config#ISP|Id
  2. Wprowadzamy wartość: AppleWebKit/535.1
  3. Zapisujemy zmainy, restartujemy Operę

To dowodzi, że wina leży tylko i wyłącznie po stronie Google, który z sobie znanych tylko powodów blokuje użytkowników Opery. Można zastanawiać się, dlaczego firma posuwa się do stosowania chwytów poniżej pasa? Czyżby bała się uczciwej konkurencji? Może zdaje sobie sprawę, że Opera pod względem funkcjonalnym bije na głowę ich produkt – Google Chrome? ;)

Odpowiedzcie sobie sami. Przy okazji przypomnę, że najnowszą wersję Opery znaleźć można na stronie firmy. :)

Edit: Już użytkownicy napisali skrypty, a nawet wtyczkę, która naprawia serwis Google+.

By Paweł Talacha • Soft 0 • Tags: google, opera

lip 26 2011

ViSUD – zapowiedź #1

Mamy wakacje, a więc tempo prac nad ViSUDem także jest iście wakacyjne. Średnio – kilka linijek na dobę – w końcu są ciekawsze rzeczy do roboty. :) Ale prace posuwają się niezmiennie do przodu i powoli z czeluści losowych znaków wyłaniają się bardziej uporządkowane fragmenty, których to zbiory zaczynają ze sobą wzajemnie współgrać tworząc kod. Jest już gotowych mnóstwo rzeczy – jeśli ktoś czytał wpisy na blipie, wie, co zostało zrobione. Nie o wszystkim tam jednak pisałem (na razie są one tajemnicą) i nie prezentowałem dotychczas większych fragmentów interfejsu. Dziś jednak zamierzam pokazać kilka rzeczy z silnika.

Przede wszystkim – questy. To one – obok obsługi przedmiotów i walki – stanowią istotę tekstowych gier przygodowych. Dzięki nim możliwe jest budowanie fabuły i tworzenie ciągu zależnych od siebie zadań, które gracz będzie musiał wykonać, aby odblokować kolejne fragmenty gry. W jaki sposób działać będą w ViSUD? Zapraszam do obejrzenia filmu (najlepiej bezpośrednio w serwisie YouTube, na pełnym ekranie w najwyższej rozdzielczości).

Należy pamiętać, że nadal jest to bardzo wstępna wersja i sporo rzeczy może jeszcze ulec zmianie. Na pewno do poprawki jest wzór liczący limit inwentarza, bo przy niskich poziomach jest zbyt mały i komicznie to wygląda. ;) Oczywiście „gra” zaprezentowana na filmie nie jest żadną grą – są to tylko fragmenty testowe.

By Paweł Talacha • ViSUD 0 • Tags: visud

cze 2 2011

Apache OpenOffice

Bardzo ciekawe rzeczy wydarzyły się w kwestii pakietu biurowego OpenOffice.org. Otóż firma Oracle ogłosiła, że przekazuje go Apache Software Foundation. Luke Kowalski, vice prezes, Oracle Corporate Architecture Group, określił akt ten jako manifestację zobowiązań wobec twórców i społeczności open source. Jego zdaniem, zapewni to popularnemu pakietowi dojrzałą opiekę, otwartą i stabilną infrastrukturę oraz dobre warunki dla dalszego rozwoju.

Do społeczności Apache należał będzie więc kod projektu, prawa autorskie oraz znak handlowy. Oracle zachowa dla siebie patenty związane z OpenOffice.org, uzyskane przy okazji przejęcia Sun Microsystems.

Od czasu, kiedy w ręce firmy Oracle trafił OpenOffice.org, nie zrobiono właściwie nic w celu jego rozwoju. Część programistów w obawie przed zamknięciem projektu i innymi dziwnymi decyzjami kierownictwa zbuntowała się, zakładając The Document Foundation, w ramach której rozwijany jest LibreOffice, bazujący na OpenOffice.org.

TDF wyraża nadzieję na współpracę z Apache Software Foundation i połączenie wysiłków obu społeczności, co będzie możliwe dzięki zmianie licencji projektu.

Pozostaje więc czekać na rozwój wydarzeń i trzymać kciuki, żeby się wszyscy dogadali i zaczęli dynamicznie rozwijać soft współpracując, zamiast każdy z osobna bawić się w swojej piaskownicy swoimi zabawkami. Takie rozwiązanie powinno przynieść korzyść nie tylko dla użytkowników, ale również dla podmiotów zewnętrznych zaangażowanych w rozwój projektu. Swoją drogą – ciekawe w jaki sposób zareagują wydawcy różnych dystrybucji systemów linuxowych, jeśli do fuzji nie dojdzie? Czekamy więc.

Tymczasem lada dzień, zgodnie z harmonogramem, The Document Foundation powinno wypuścić LibreOffice 3.4.

By Paweł Talacha • Soft 0 • Tags: apache, libreoffice, opernoffice

maj 18 2011

Komunikacja applet – kontroler Java Spring

Przeglądając sieć zauważyłem, że trochę osób ma problem z komunikacją applet – kontroler Java Spring (model MVC). Trudno znaleźć opis zagadnienia. Postanowiłem więc napisać kilka słów.

Założenie jest takie, aby kontroler odebrał dane, przetworzył i przekazał do widoku lub ewentualnie odpowiedział wysyłając komunikat do appletu. Oczywiście najlepiej byłoby przesyłać całe obiekty (serializacja), aby móc np. potem korzystając z JPA (mapowanie obiektowo-relacyjne) zapisać dane wygodnie do bazy. Dlatego też użyjemy strumieni obiektowych (ObjectOutputStream oraz ObjectInputStream).

Zanim jednak przejdę do rzeczy – kilka słów na temat sposobu osadzania appletu.
Po pierwsze – nabywamy ładnych nawyków, więc używamy znacznika object, nie applet.
Po drugie – jeżeli nasz applet był tworzony z wykorzystaniem dodatkowych bibliotek, np. AbsoluteLayout, należy też je dołączyć. Umieszczamy więc w pliku widoku kod:

<object type="application/x-java-applet" width="800" height="600">
     <param name="classid" value="java:pakiet.Klasa.class" />
     <param name="archive" value="naszApplet.jar, AbsoluteLayout.jar" />
</object>

W ten sposób nasz applet będzie wyświetlany na wybranej stronie. A co z komunikacją?

applet → kontroler

Aby wysyłać dane do kontrolera, w metodzie appletu, która ma to robić, umieszczamy kod:

URL url = new URL("http://adresSeriwsu/odebranieDanych.html");
URLConnection uc = url.openConnection();
uc.setDoInput(true);
uc.setDoOutput(true);
uc.setUseCaches(false);
uc.setDefaultUseCaches(false);
uc.setRequestProperty ("Content-Type", "application/octet-stream");
OutputStream out = uc.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject("chrząszcz brzmi w trzcinie");
oos.flush();
oos.close();

Kolejno – tworzymy połączenie z odpowiednim adresem, przygotowujemy wejście i wyjście oraz upewniamy się, że nie będzie użyta wersja połączenia z pamięci podręcznej. Następnie definiujemy typ zawartości i ustawiamy strumienie. Do celów przykładu przesyłany jest obiekt String czyli ciąg znaków. Metoda kontrolera odbierająca informacje może wyglądać następująco:

@RequestMapping(value = "/odbieranieDanych", method = RequestMethod.POST)
public void savindProcess(HttpServletRequest req, HttpServletResponse res) throws Exception {
     ServletInputStream in = req.getInputStream();
     ObjectInputStream ois = new ObjectInputStream(in);
     String data = (String) ois.readObject();
     System.out.println("oderano: "+data);
}

I w ten oto sposób „chrząszcz brzmi w trzcinie” będzie widoczny z poziomu kontrolera.

kontroler → applet

Załóżmy, że chcemy, aby powyższa metoda zwracała jakieś informacje do appletu. Uzupełniamy ją więc o poniższy kod.

ServletOutputStream out = res.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject("wysyłamy coś do appletu");
oos.flush();
oos.close();

Tu również przesłany jest ciąg znaków. Applet odbierze dane w następujący sposób:

InputStream in = uc.getInputStream();
ObjectInputStream ois = new ObjectInputStream(in);
String data;
try {
     data = (String) ois.readObject();
     System.out.println("applet dostał: "+data);
} catch (ClassNotFoundException ex) {
}

I tak mamy zapewnioną komunikację pomiędzy appletem, a kontrolerem Java Spring. Łatwo zauważyć, że jest ona dość podobna do komunikacji ze zwyczajnymi servletami. Po wykonaniu takiej operacji można spokojnie przetworzyć dane i przekazać do widoku lub zapisać do bazy.

By Paweł Talacha • Java 0 • Tags: applet, java, komunikacja, kontroler, spring

kwi 28 2011

ViSUD – podstawowe informacje

Dawno, dawno temu, w odległej galaktyce… W każdym razie dawno temu strasznie chciałem napisać przygodową grę tekstową. Zaczęło się od fascynacji grami paragrafowymi („Dreszcz” Jacka Ciesielskiego zamieszczony w jednym z numerów Fantastyki był chyba pierwszy), potem gry na komputerze, m.in. świetny polski Single User-Dungeon – Otchłań – nadal rozwijany! Na fali oczarowania postanowiłem zrealizować swoje własne pomysły. I tak zacząłem pisać w Pascalu. Powstał system walki, kilka lokacji, potworków i NPC, z którym można było pogadać albo go zabić. ;) Zabrakło mi wtedy cierpliwości w pisaniu i umiejętności (było to z 10 lat temu – ale ten czas leci!).

Kilka screenów moich ówczesnych wypocin
Kilka screenów moich ówczesnych wypocin

Niestety, jak zauważyłem, tak często bywa w projektach tego typu. Gry próbują tworzyć ludzie, którzy mają świetne pomysły – ale, proces wytwarzania jest długi i żmudny. Dodatkowo złe rozplanowanie i obmyślenie mechanizmów często prowadzi do niepowodzenia i zarzucenia projektu.

Od jakieś czasu chodziło mi po głowie napisanie narzędzia wspomagającego tworzenie tekstowych gier RPG. Projektowałem i obmyślałem, jak całość ma działać. Wyszedł całkiem zaawansowany system. Jednym z jego modułów będzie edytor gier. Kolejnym – środowisko uruchomieniowe dla nich – silnik. Implementacją tych dwóch modułów będę się teraz głównie zajmował w wolnym czasie. Ewentualne informacje o postępach prac będą zamieszczane na blipie.

By Paweł Talacha • ViSUD 0 • Tags: mud, sud, vicus

kwi 24 2011

NetBeans 7.0

W połowie tego tygodnia wydana została nowa wersja NetBeans – darmowego, otwartego środowiska programistycznego. Nowości to m.in. obsługa Oracle Database i GlassFish 3.1. Dodano możliwość korzystania z tagów HTML5 i dopieszczono sam edytor poprawiając mechanizm uzupełnienia kodu i podpowiedzi. NetBeans 7 zintegrowany został z JUnit 4.8.2, wspiera także Maven 3. Poprawiono także moduły odpowiedzialne za tworzenie aplikacji, np. nowy sposób projektowania GridBagLayout. :) Ważniejsze zmiany prezentuje poniższy filmik.

Więcej informacji znaleźć można na stronie projektu.

Czytaj więcej…

By Paweł Talacha • Soft 0 • Tags: eclipse, netbeans

1 2 3 4

Kategorie

  • Poradniki (3)
  • Programowanie (26)
    • Java (3)
    • Moje wynalazki (22)
      • ViCMS (18)
      • ViSUD (2)
  • Soft (5)

Polecam

  • Foobar
  • IntelliJ IDEA
  • Meld
  • Signal
  • SourceTree
  • Vivaldi

↑

© Paweł Talacha 2009 - 2023
Witryna używa plików cookies. Korzystanie z funkcji, w których są one stosowane oznacza akceptację tego stanu.OK, zamknij Czytaj więcej
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SAVE & ACCEPT