Hirdetés

2020. április 10., péntek

Gyorskeresés

Blog

[ ÚJ BEJEGYZÉS ]   [ ÚJ CIKK ]

  • RETRO-20

    Lázban égek, de nem a COVID-19, hanem a RETRO-20 miatt, elővettem a régiségeimet, hogy lássam, működnek-e még, illetve megoldható-e némi modernizáció.

    Az alapot egy ACORP 6VIA85P lap adja, amely újkorában sem volt egy acélos darab mivel a VIA chipset memóriakezelése elég gyatra volt (memory interleaving-et nem vitte), de ezen már rég segítettem egy moddolt orosz BIOS-szal.

    Chipset VIA693A+596B
    CPU Support PC-PGA Pentium III Coppermine, PPGA Celeron, Cyrix III Processor
    233Mhz ~ 1000Mhz
    Voltage Regulator VRM 8.4 (Auto Detect)
    Bus CLK 66 / 100 / 133 Mhz
    Bus Architecture PCI x 3, ISA x 2, AGP x 1
    System Memory DIMM x 2
    USB Support 2 x Universal Serial Bus
    On board I/O Super I/O, Floppy x 1, Serial Port x 1, Parallel Port x 1, IR x 1
    DMA Support Ultra DMA 33 / 66
    Power Support AT, ATX
    BIOS 2MB BIOS and PC System Monitor
    Intelligent Wake Up Wake on Lan,
    Wake on Modem,
    Wake on Alarm
    Board Size 22 x 22 cm

    Az alaplap másik érdekessége mai szemmel, hogy igényli a -5V-ot a tápegységtől, ezért csak ATX 2.0 vagy régebbi szabványú táppal indul el.

    Folytatás...

    Peter Kiss 1 hete 2

  • HP ThinClient T610 WiFi-vel

    T610-es vékonykliensünk belül rendelkezik rengeteg porttal, csatlakozóval, kihasználni őket persze nem egyszerű, de nem is lehetetlen.

    Már egy pár hónapja kitaláltam, hogy WiFi-vel is lehetne bővíteni a masinát, erre alkalmas a lapon találtam x1-es PCIe slot.

    A rögzítésre használt aljzatokat külön kiemelném, mert ezek nem fognak nekünk sokat segíteni abban, hogy bármit is rögzítsenek, ugyanis lehetetlen kicsi csavart tudnak csak fogadni, amit nekem sikerült beletekernem, azt egy notebook hűtőjéből operáltam ki, habár még ez is túl hosszú, nem fogja szorosan a kártyát.

    A használt WiFi kártya pedig a már bemutatott Intel® Centrino® Advanced-N 6235 - ez volt kéznél.

    Folytatás...

    Peter Kiss 3 hónapja 2

  • Nosztalgia: Segélyvonal

    Volt régen a magyar PC World-nek egy Segélyvonal fóruma, ami ugyan nem volt nagy, de sok cucc összegyűlt az évek során. Sajnos mostanta már kb. nyoma sem maradt, de magamnak lementettem pár összefoglalót még, itt elérhető:

    pcw-segelyvonal/raw/

    Egy kis részét átdobtam markdown-ba, így talán élvezhetőbb, majd még megcsinálok párat:

    pcw-segelyvonal/halozatepites/routerek-switchek-access-pointok-a-halozatban/router-ek-beallitasa.md

    Talán ez volt a legnépszerűbb, azóta sok minden változott, én is máshogyan írnám már meg ezt, de még jól jöhet bármikor így is, hogy már 10+ éves.
    Eredeti linkje: http://www.pcworld.hu/forum/index.php?showtopic=13299 - pár helyen fellelhető hivatkozva :D

    Peter Kiss 5 hónapja 11

  • HP ThinClient T610 2.5"-os HDD-vel

    A napokban beszereztem egy ilyen T610-es vékonyklienst bizonyos célokra, de már az elejétől fogva kerestem, hogyan lehetne majd HDD-t is pakolni bele, szerencsére port akad a masinában, sajnos beépítési lehetőség mérsékelten.

    Alapkiszerelésen egy SATA SSD-vel szerelik, főlötte látható egy szabad SATA foglalat kiépítve, ide tudunk csatlakoztatni másik egységet, ha meg tudjuk oldani a HDD vagy SSD rögzítését.

    A megoldást egy spéci keret adta, amelyet valaki megalkotott, és bárki ki tudja nyomtatni magának, itt elérhető, letölthető, persze vannak más ötletek is, amelyeket itt meg is nézhetünk.

    Maradtam a keretnél, ami ma át is vettem Janix12 kollégától, akitől 2 ilyen keretet kértem, biztos, ami biztos.

    Folytatás...

    Peter Kiss 7 hónapja 5

  • Troll rang

    Peter Kiss 8 hónapja 2

  • Intel® Centrino® Advanced-N 6235

    Akinek Intel® Centrino® Advanced-N 6235 WiFi kártya van a gépében, az dobhatja ki is nyugodtan.

    2170p géppel küzdöttem és még küzdök is, de ilyen hulladék kártyát még nem láttam, nem tudom, ki szaladt még ilyenbe bele, de gyakorlatilag az összes driver rossz, vagy mondjuk a kártya maga. Intel fórumok is tele vannak mindenféle gonddal, legyen szó bármilyen gépről.

    Kicseréltem egy 6205-ösre (így nincs BT, de, na), ezzel már jobb a helyzet, legalább csatlakozni bír rendesen, még, ha a teljesítménye nem is az igazi, de itt már simán bejátszhat maga a gép az antennáival.

    Intel® Centrino® Advanced-N 6235 WiFi kártya eladó :DDD

    Peter Kiss 2 éve 11

  • HP EliteBook 2560p optibay - nem áll le a gép

    Vettem egy optibay-t a notebook-jaimba, de azt vettem észre, hogy nem tudom lekapcsolni a gépet. Windows önmagában leáll, de a kikapcsolási folyamata a gépnek megáll, és a végtelenségig bekapcsolva tudna maradni.

    A probléma az optibay-jel van, sok notebook-nál jelentkezik, megoldási lehetőségek:

    1. 1 pin leragasztása

    2. ha van kapcsoló a HDD caddy-n:

    Esetleg máshol van a kapcsoló:

    Nekem ez a probléma új volt, hátha segít másnak is.

    Peter Kiss 3 éve 4

  • Hyper-V, Opteron és a power plan

    Virtual machine teljesítményét nem kis mértékben tudja befolyásolni a hyper visor power plan beállítása. Neten olvasható számtalan hasonló probléma vagy tapasztalás.

    Itt csak egy SuperPI futás látható, de a számokból látszik némi különbség, emellett ugyanez előjött egy sima Windows Update telepítésnél vagy bármi másnál.

    Hyper-V Server 2016
    2xAMD Opteron 4170 HE

    Peter Kiss 3 éve 1

  • C# indexer

    public class UltimateProExpertIndexer
    {
    private readonly IDictionary<int, int> items = Enumerable.Range(0, 100).ToDictionary(x => x);

    public int this[int index]
    {
    get { return items[index]; }
    }

    public IEnumerable<int> this[params int[] indexes]
    {
    get
    {
    foreach (var item in indexes)
    {
    yield return items[item];
    }
    }
    }
    }

    Tegye fel a kezét, aki már gondolkodott ilyenben. :DDD

    Peter Kiss 5 éve 1

  • Albérletkeresés

    Albérletet keresek Budapesten, pár dolog, amit elkövetnek ellenem a hirdetők, te ne csináld utának, ha esetleg kiadnál lakást.

    Nincsenek képek, dafuq?! :W
    Nincs lekapva, milyen bejárati ajtó van;
    Nincs képen az ágy (van egyáltalán?);
    Nincs minden helyiség képen;
    A képek akkor készültek, mikor minden redőny le volt húzva, miért?!
    Közös költség nem titkos...
    Nincs a lakásban olyan asztal + szék, aminél dolgozni lehet...
    Ne akarja senki se a 20-30+ éves kommunista bútorait kiadni így. :U
    Ugyanez igaz a régi háztartási eszközökre...

    Majd még biztosan bővül a lista.

    Peter Kiss 5 éve 21

  • .PHP SQL-ezés

    Mostanában újra ilyesmin töröm az agyam:

    using(new MySqliConnection("server", "database", "user", "password"), function (IDbConnection $conn) {
    $conn->Open();

    using($conn->BeginTransaction(), function(IDbTransaction $transaction) use($conn) {
    using($conn->CreateCommand(DbObject::Map("uspInsertAnimal", "dbo")), function ($sp) {
    $sp->CommandType(DbCommandType::StoredProcedure);
    $name = $sp->Parameters()->CreateParameter("name", NULL, DbType::String);
    $out = $sp->Parameters()->CreateParameter("o", -1, DbType::Integer, ParameterDirection::Output);

    foreach (array("insert1", "insert2") as $value) {
    $name->SetValue($value);

    // lame check
    var_dump($sp->ExecuteScalar());

    // lame check #2
    var_dump($out->GetValue());
    }
    });

    $transaction->Commit();
    });
    });

    Ha a MySqliConnection-t kicserélem egy SqlSrvConnection-re, akkor elvileg minden megy ugyanúgy, semmivel sem kell machinálni a kódban.

    Folytatás...

    Peter Kiss 5 éve 20

  • Kollekciók egyenlősége

    Ha nem számít a sorrend, és minden elemnek ugyanannyiszor kell meglennie:

    Tesztek (nem fednek mindent)
    EquivalentWith extension method

    Hátha hasznos valakinek.

    Peter Kiss 5 éve 1

  • Napi Linq

    Tételezzük fel, hogy Entity Framework forrásból kérdezünk le olyan módon, hogy több eredményhalmazt kapcsolunk össze, majd valamilyen módon kiszedünk belőle 1 elemet.

    var max = _context.EntitySet.Where(expr1)
    .Union(_context.EntitySet.Where(expr2))
    .Union(_context.EntitySet.Where(expr3))
    .Union(_context.EntitySet.Where(expr1))
    .Max(maxExpr);

    Aggodalomra semmi ok, rendben működik, IQueryable<T>, nagyjából normális, egy nagy SQL lekérdezés lesz belőle. Vagy mégsem?

    Sajnos nem teljesen, mert messze nem lesz optimális a generált SQL kód, ugyanis sub select-eket fog gyártani nekünk DISTINCT-tel ellátva, majd azokat fogja össze UNION-nal, ami elég pazarló, mert többször megismétli ugyanazokat a műveleteket teljesen feleslegesen, emiatt írjuk át a következőre:

    var max = _context.EntitySet.Where(expr1)
    .Concat(_context.EntitySet.Where(expr2))
    .Concat(_context.EntitySet.Where(expr3))
    .Concat(_context.EntitySet.Where(expr1))
    .Max(maxExpr);

    Folytatás...

    Peter Kiss 6 éve 1

  • Linq, hogyan írj lassú kódot

    A mai nap folyamán jó lassú kóddal foglalkoztunk, amit tudni lehet róla, hogy rengeteg iteráció volt benne:
    foreach
    for
    .Where(Func)
    .Single(Func)
    .SingleOrDefault(Func)
    .First(Func)
    .Any(Func)

    És természetesen ezek kombinációi is előfordultak, mondanom sem kell, hogy egymásba ágyazva ciklusok, elemek keresése egy halmazban Single()-lel és hasonlók.

    Ez fosch. :)

    Mi a megoldás? Lookup. Egy lookup működését összefoglalhatjuk úgy, hogy a halmaz minden elemére mutat egy egyedi kulcs, persze az is lehet, hogy az adott kulcs nem egy elemre, hanem egy másik halmazra vagy akár másik lookup-ra mutat.

    Lookup "támogatás" is van a Linq-ban ToDictionary() és ToLookup() formájában, attól függ, éppen mire van szükségünk. Átírtuk a kódot lookuposra, és lám, a legrosszabb 15+ perces futásból lett <1.5 perc, ez már egész jó, de még biztosan lesz benne tartalék, illetve több tényezőtől is függ az adott futási idő, de azért nem rossz.

    Amit még előszedtünk, az a memóriafoglalás kérdése, gondolom, mindenki tudja, hogy pl. egy üres List<T> mögött nincs memóriafoglalás az elemek számára, hanem mindig terjeszkedik, ami szintén teljesítményromboló lehet, a gazdaságtalan memóriahasználatról nem is beszélve (hiába a managelt kód).

    Kössük össze a kettőt!

    Folytatás...

    Peter Kiss 6 éve 2

  • public static TSingle<T>(this IEnumerable<T> source, Func<T, bool> predicate)

    A gyári .NET Single(predicate) extension method implementációja így néz ki:

    public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
    {
    if (source == null)
    throw Error.ArgumentNull("source");
    if (predicate == null)
    throw Error.ArgumentNull("predicate");
    TSource source1 = default(TSource);
    long num = 0L;
    foreach (TSource source2 in source)
    {
    if (predicate(source2))
    {
    source1 = source2;
    checked { ++num; }
    }
    }
    switch (num)
    {
    case 0L:
    throw Error.NoMatch();
    case 1L:
    return source1;
    default:
    throw Error.MoreThanOneMatch();
    }
    }

    Mi a hiba a képen? Igen, az, hogy ez a szerencsétlen végig megy az egész source-on ellenőrizgetve a predicate-et minden egyes elemen, majd csak a végén elemzi ki, mire is járt. Képeljük el, hogy a source-ban 1 millió elem van, és ráadásnak a predicate is jó bonyolult...

    Folytatás...

    Peter Kiss 6 éve 4

  • PHP úristenilyennincs

    <?php
    class isEmailUnique{
    private $email;
    include '../dbc/DBC.php';
    $collection = $db->members;
    $ifEmailRaw = $collection->find(array('eMail' => $email));
    $ifEmail = $ifEmailRaw -> count();
    if($ifEmail > 0){
    return false;
    }
    else{
    return true;
    }
    }

    Peter Kiss 6 éve 8

  • PHP Guid

    PHP-ban Guid generálására sajnos nincs beépített lehetőség, viszont sokszor szüksége lenne egy igazán egyedi azonosítóra. Az interneten található megoldásokkal többnyire az a baj, hogy régiek, és több is platformfüggő, ami kellemetlen lehet szerverváltáskor vagy valami alap cucc megírásakor. Másik fontos észrevétel lehet, hogy egyik megoldás sem törekszik többre attól, mint "egy string generálása izékből" pedig egy egyedi azonosítónak talán több kellene.

    Valami ilyesmit képzeltem el:

    <?php

    use System\ObjectBase;

    namespace System;

    final class Guid extends ObjectBase {

    private static $_empty = array("00000000", "0000", "0000", "0000", "000000000000");

    private static $_parseFormats = array(
    "D" => "/^[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}$/i",
    "N" => "/^[a-f\d]{8}([a-f\d]{4}){4}[a-f\d]{8}$/i",
    "B" => "/^(\{)?[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}(?(1)\})$/i",
    "P" => "/^(\()?[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}(?(1)\))$/i",
    "X" => "/^(\{0x)[a-f\d]{8}((,0x)[a-f\d]{4}){2}(,\{0x)[a-f\d]{2}((,0x)[a-f\d]{2}){7}(\}\})$/i"
    );

    public static function NewGuid() {

    Folytatás...

    Peter Kiss 6 éve 4

  • PHP Web service 3: Extensibility

    Hol is tartunk? Service van, valamilyen szinten védve is (idő közben a WSDL is), de ezen túl is van még lehetőség a szolgáltatásunk fejlesztésében, mert üzenetek sima kiszolgálásán túl nem sok mindenre alkalmas, illetve akadhatnak olyan feladatok, amelyek megoldása felesleges zavart kelthetnek a service osztályunk kódjában.

    A kulcsa a bővíthetőségnek szintén az, hogy service implementálásakor ne kelljen sokat azzal foglalkoznunk, mi hogyan működik, illetve ne keltsünk a feleslegesnél nagyobb zavart a rendszerben.

    Mi az egyáltalán, amivel foglalkoznunk kellene?
    - valamilyen extra header-t kell kezelnünk a szerveren
    - paraméterek vizsgálata a service adott operation-jének meghívása előtt
    - operation meghívása
    - visszatérési érték vizsgálata serialization előtt
    - valamiféle hibakezelés
    - más?

    Mivel rendelkezünk eddig?
    - valahogyan értelmeződék a kérés (MVC routing - handler mechanizmus)
    - autentikálunk, ha kell
    - kiszolgáljuk a WSDL kéréseket
    - kiszolgáljuk a SOAP kéréseket, futtatunk egy SoapServer-t

    Szerintem érződik, hogy ez az infrastruktúra nem elég a fentiek megoldására, hiszen pl. a SoapServer objektumon dolgozik teljesen zárt rendszerben, nem férhetünk hozzá.

    Folytatás...

    Peter Kiss 6 éve 2

  • PHP Web service 2 - Az őrület folytatódik: autentikáció

    Az előző epizódban láthattuk, hogy egészen egyszerűen és olvashatóan össze lehet rakni egy web szolgáltatást PHP-val, de azzal az volt a gond, hogy bárki használhatta a service-t, nem volt korlátozva az elérhetősége.

    Éppen ezért megnézzük, mit lehet tenni az ellen, hogy illetéktelen lepjék el a webszerverünket, alkalmazásunkat.

    Azért, hogy elsőre ne bonyolítsuk a dolgokat, nézzük meg a legegyszerűbbet: Basic Authentication Scheme

    [ íme egy ismertető ]

    Most, hogy már mindent tudunk (kérés --> hát te ki vagy --> én vagyok!), lássuk, mit tudunk kihozni, hogy egyszerű legyen használnunk:

    <?php

    /* namespace játék */

    class SvcController extends WebService {

    public static function __static() {
    typeof(__CLASS__)->Attributes()->MethodAttributes()->Add("Method1", new Operation(typeof(new InPut()), "method1 leírása"))->Add("VoidMethod", new Operation());
    }

    protected function _authenticateBy() {
    return new BasicServiceAuthenticator();
    }

    protected function _onAuthenticating(AuthenticationRequest $authRequest) {

    Folytatás...

    Peter Kiss 6 éve 2

  • PHP Web service

    Szerintem aki kicsit is foglalkozik a PHP-val, már látta, hogyan lehet egy SOAP web service-t létrehozni vele, ott van a beépített SoapServer megoldás, a közkedvelt nuSOAP, de nagyobb keretrendszerek is adnak rá támogatást.
    Ami közös mindben, hogy nyűg meghegeszteni ezeket, mindnek megvan a maga problémája, vagy csak egyszerű ocsmány lesz az eredmény.

    A napokban a PHP topikban is előjött egy ilyen témájú probléma, ezért megfordult a fejemben, hogy megpróbálom belefűzni a meglévő MVC-s keretembe azt, hogy létre tudjunk hozni egyszerűen web service-t PHP-val.

    Ami alapból kikötés volt:
    - nincs kézi WSDL irkálás
    - nincs annotálás
    - metódus paramétere csak complex type lehet (vagy void nyilván)

    Amit el kell fogadni, hogy fosch lesz: osztályok kidekorálása service infókkal

    Eredmény, egy service osztály:

    <?php

    /* namespace játék */

    class SvcController extends WebService {

    public static function __static() {
    typeof(__CLASS__)->Attributes()->MethodAttributes()->Add("Method1", new Operation(typeof(new InPut()), "method1 leírása"))->Add("VoidMethod", new Operation());
    }

    public function Method1(InPut $in) {
    /* ... */
    return $out;
    }

    public function VoidMethod() {
    /* ... */

    Folytatás...

    Peter Kiss 6 éve 1

  • PHP: interface implementálás trait-tel

    NEM LEHETSÉGES

    Mégis kiválóan használható! :)

    Tételezzük fel, hogy van egy ilyesmi interface-ünk:

    <?php

    namespace System\Collections;

    interface IEnumerable {

    function Avg($callback = NULL);

    function Count($callback = NULL);

    function Contains($item, $comparer = NULL);

    function FirstOrDefault($callback = NULL);

    function GroupBy(\Closure $callback);

    function OrderBy(\Closure $callback);

    function Sum($callback = NULL);

    function ToArray();

    function ToList();

    function ToLookup(\Closure $keyMaker);

    function Where(\Closure $callback);

    function Any($callback = NULL);

    function Union($enumerable);

    function UnionAll($enumerable);

    function Take($take);

    function SelectMany(\Closure $func);

    function Zip($other, \Closure $func);
    }

    Interface-nek nem kicsi, sőt, az igaziban ennél több is van, .NET programozók már észlelhetik, miről van szó.

    Folytatás...

    Peter Kiss 7 éve 6

  • PHP függőségek: web szerver

    PHP-nak vannak függőségei, bár nem egészen olyanok, mint egy embernek. Közvetlenül a webszerver felé vannak elvárásai, kicsivel közvetettebben pedig az operációs rendszer felé (gondoljunk csak a fájlrendszerek különbségeire például).

    Ezeknek a függőségeknek a kiiktatása lehetetlen (persze, ha a PHP-t nem weben keresztül használjuk, nyilván nincs webszerveres függősége), viszont megpróbálhatjuk kisimítani, vagy legalább elrejteni a rendszerek közötti különbségeket. A kettő közül igazán okos megoldások az elsőre vannak, utóbbi esetében pedig fokozottan oda kell figyelni, hogyan is használjuk az erőforrásokat, most az elsőre adok egy ötletet.

    Mikor PHP-s alkalmazásokat fejlesztünk, elsőnek mindig szükségünk van egy vázra, amibe a konkrét alkalmazást pakoljuk, ez lehet általunk készített vagy már kész keretrendszer is. Több példát is lehet látni arra, hogy bizonyos metódusok belsejében hatalmas if-else block-ok vannak arra vonatkozóan, hogy az adott környezet épp mit támogat az adott funkcionalitás elérése érdekében. Szerencsések vagyunk, mert a PHP objektum orientáltsága mindent megad nekünk, hogy ekkora hülyeségeket ne kövessünk el. Ami miatt még örülhetünk, hogy az idő előrehaladtával a különbségeket maga a PHP fogja lekezelni, ha nem is teljesen.

    Folytatás...

    Peter Kiss 7 éve 1

  • PHP telepítése Windows 7, 8-ra (Vista-ra is szerintem)

    Nem, Apache-ot nem telepítünk. Pfuj.

    Windows-on a web server szerepét az Internet Information Services (IIS) fogja betölteni, ami amellett, hogy rendelkezik egy normális grafikus kezelőkonzollal, remekül tudja futtatni a PHP-t Windows-on egy pár kattintásos telepítés után, sőt, akár több verziót is fenn tudunk tartani vele könnyen.

    PHP telepítését semmi esetre sem kézzel fogjuk végezni, a Microsoft ehhez is ad nekünk nem kis segítség a Microsoft Web Platform Installer személyében, amivel PHP mellet IIS modulokat telepíthetünk (fogunk is), de van itt ASP.NET-hez cucc, alkalmazások is megtalálható, szóval minden, ami webfejlesztéshez kellhet.

    Első lépésként telepítsük fel a WPI-t a fenti linkről, a picike exe-t simán futtassuk böngészőből, kis szöszmötölés után meg fog jelenni egy katalógus keresővel a jobb felső sarkában, beállításokkal a jobb alsó részén.

    Először a beállítások fognak kelleni, itt megadjuk, hogy nem Express IIS-t akarunk használni, hanem rendeset.

    Keresőbe véssük be a "php" kulcsszót, majd [enter]

    Folytatás...

    Peter Kiss 7 éve 8

  • Motorola

    A Motorola-tól ocsmányabb céget még nem láttam, moslék népség.

    Cégnél vannak (eredetileg Symbol) Motorla barcode reader-ek, amelyek össze vannak építve egy PDA-val, amin többnyire Windows CE fut. Erre kellett fejleszteni alkalmazást, és emiatt kerültem közelebbi kapcsolatba velük.

    Az oldalukon semmit nem lehet megtalálni, ha egyáltalán működik, volt, hogy egy napon keresztül minden 404-et dobott, illetve még a keresőjük is visszahozta a saját 404-es hibaoldalukat.
    A PDA-khoz való SDK megtalálása sem egyszerű, futott összesen három név alatt, és kb. csak a 2. napon sikerült megtalálnom a legfrissebb EMDK-t. Miután sikerült letöltenem, a következő probléma a feltelepítéssel volt, ugyanis képtelen volt felmászni Windows 7 + Visual Studio 2008 kombóra, szerezni kellett egy XP-s gépet hozzá, erről átmásolva a DLL-eket már ment a dolog.

    Problémánk van a PDA-k WiFi-jével is, igyekeztem ezt is frissíteni (Fusion, ha mond valakinek valamit), csakhogy már nekünk nincs támogatásunk a PDA-k, mert X éevesek, ezért le sem tölthetem az újabb szoftvert, pedig a Motorola is nagyon jól tudja, hogy egy rakás sz.r azegész, olyan hosszú a change log. Kerülővel végül sikerült beszereznem a CAB fájlt, az oldal leírása szerint csak fel kell másolni az eszközre majd telepíteni. Aha, majdnem.

    Folytatás...

    Peter Kiss 7 éve 9

  • ASP.NET MVC - EditorFor template HTML name

    Az EditorFor(/* ... */) extension method arra szolgál, hogy view-okban alkalmazhassunk template-eket arra, hogy egy primitív property, vagy akár egy egész objektum szerkesztésének megjelenítését, felépítését leírjuk, ezzel átláthatóbb kódot kaphatunk. Fontos tudni, hogy ekkor a keretrendszer folytatja az elnevezés konevncióját, tehát nem fog eltörni az elnevezési "lánc"

    Html.EditorFor(model => model.Property)

    Template-ben:
    Html.TextBoxFor(model => model.Something.Value.ElefantAndCastle)

    Eredmény:
    Property.Something.Value.ElefantAndCastle

    Ez nagyon klassz akkor, ha nem egy collection elemének kell, mert akkor ilyesmit kaphatunk például (a Property itt egy IList<T>-t takarhat).
    Property.[0].Something.Value.ElefantAndCastle

    A gond a Property.[0].Something résszel van, az indexer előtt keletkezik egy plusz pont, amit viszont a DefaultModelBinder nem fog tudni használni, hiszen helyesen így lenne:

    Property[0].Something.Value.ElefantAndCastle

    Nem tudom, hogy miért nem figyeltek erre a készítők, de annyi biztos, hogy MVC 3-ban is (már) így működött, és a 4-es folytatja a hagyományt.

    Folytatás...

    Peter Kiss 7 éve 1

  • SQL Server Data Tools – Business Intelligence for Visual Studio 2012

    Pár napja megjelent az SQL Server Data Tools kiegészítés (nem egészen az, mert 2012 Isolated Shell-lel megy) Visual Studio 2012-höz, amivel lehetőségünk van Reporting, Analysis és Integration Services projektek készítésére, innentől a BIDS halottnak tekinthető

    Ami igazán jó benne, hogy elvileg 2005-ös szerverrel (projekttel) és attól újabbal működik, tehát régebbi változatok miatt nem kell megtartani a régi Visual Studio-t. Nálunk SQL Server 2008-asok működnek, ezekhez tartozó Reporting projekteket nem tudtuk kezelni Visual Studio 2010-ben, fenn kellett lennie a 2008-asnak is, emellett ezen a héten váltottunk 2012-es Studio-ra, így most még nagyobb az öröm.

    Download Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012 (782 MB)

    Arról tud valaki valamit, hogy Windows CE5 és újabbra lesz-e valaha támogatás VS2012-höz? Ebbeb a negyedévben ígértek valamit, de sehol semmi, windowsembedded.com-on is 2008-as Visual Studio-t emlegetnek.

    Peter Kiss 7 éve 1

  • ASP.NET MVC Excel export ActionResult-tal

    Sokszor kell Excel-be exportálnunk a cégnél, eddig erre volt ASP.NET control, de mivel az alkalmazott csomag egy rakás szar, nem is szeretnénk tovább használni, emelett Web Forms helyett már inkább MVC felé tartunk, így kellett valami megoldás. Az alább látható kód nem 100%-ban az enyém (nem tudom már, honnan van az alja), ami plusz és hasznos, az a System.ComponentModel attribútumok alkalmazása.

    http://epplus.codeplex.com/ megoldására építve:

    public class ExcelResult : ActionResult
    {
    public ExcelPackage ExcelPackage { get; set; }
    public string FileName { get; set; }
    public override void ExecuteResult(ControllerContext context)
    {
    context.HttpContext.Response.AppendHeader("Content-type", "application/vnd.ms-excel");
    context.HttpContext.Response.AppendHeader("Content-disposition", string.Format("attachment; filename={0}.xlsx", FileName));

    var asByteArray = ExcelPackage.GetAsByteArray();

    ExcelPackage.Dispose();

    context.HttpContext.Response.OutputStream.Write(asByteArray, 0, asByteArray.Length);
    }
    }

    public class ExcelResult<T> : ExcelResult
    {

    Folytatás...

    Peter Kiss 7 éve 1

  • Mai PHP fejlesztési ajánlatok

    Ne rakd ki a záró PHP tag-et, mert véletlen white space-eket fogsz magad után hagyni.
    Ha eddig Apache-on fejlesztettél, akkor próbáld ki a cuccot IIS-en is, nehogy valahol meglepetés érjen (fordítva is igaz).

    Ma a cégnél hozták az egyik külsős alkalmazás frissítését, ott jöttek elő ezek, srác egy kicsit tanácstalan volt.

    Peter Kiss 7 éve 1

  • ASP.NET MVC debug

    Nekem valahogy nem tűnt fel a dolog reklámozása, csak az, hogy MVC alkalmazások debugja iszonyat lassú tud lenni. Megoldás: IntelliTrace letiltása.

    Forrás (Connect)

    How to: Enable and Disable IntelliTrace

    Peter Kiss 7 éve 1

  • WCF dependency injection

    A dependency injection-t remélhetőleg már nem kell bemutatni, mi is lenne, ám azt úgy gondolom, kevesebben tudják, amibe sikeürlt belefutnom.

    Történt ugyanis, hogy hősünk egy faék WCF service-t szeretett volna készíteni, amit sikerült is megépíteni, hasznos unit test-ekkel körülbástyázni, remekül működött.
    A probléma akkor kezdődött, mikor tényleges service-ként kellett volna működésbe hozni, tesztelés alatt ugyanis nem történik nagy varázslat, simán példányosítással történik a működés ellenőrzés.

    IIS-en host-olt WCF service-ek aktivációját mindig egy factory végzi, amit mi magunk is beállíthatunk, ha megnézzük a *.svc fájlunk markup-ját, abba az egyetlen direktívába kell felvennünk a Factory-nkat:

    <%@ ServiceHost Language="C#" Debug="true" Service="SmartcardService.Authentication"
    CodeBehind="Authentication.svc.cs" Factory="SmartcardService.Factory.ServiceFactory" %>

    Ennek a service-nek nincs paraméter nélküli konstruktora (hogy lenne?), így érdemes egy DI framework-öt választani, aminek van WCF-es támogatása (van neki WCF factory-ja) is, nekem a Ninject-re esett a választásom, factory-ja: NinjectServiceHostFactory

    Folytatás...

    Peter Kiss 7 éve 1

Hirdetés

Copyright © 2000-2020 PROHARDVER Informatikai Kft.