Monthly Archives: February 2016

Mac workflow: Alfred dict.cc translation

Azonnali fordításhoz (=nem akarom levenni a billentyűzetről a kezem ahhoz, hogy lefordítsak egy szót) jó ideig nagy örömmel használtam a Thomas Hempel féle Alfred Google Translate workflow-t, ám a Google egy ideje DDOS attacknak veszi a workflow ismétlődő lekérdezéseit és ez azt eredményezi, hogy viszonylag gyorsan kizár a szolgáltatásból egy teljes napra. Nem volt mese, más fordító megoldás után kellett nézni - így akadtam rá a dict.cc-re.

Innen már csak pár lépés volt Raphael Baron dict.cc-hez írt Python kódja, onnan meg Thomas Hirsch Alfredre szabott workflow-ja.
Thomas megoldása sajna bedrótozta a workflowba, hogy az angol->német irányban fordítson, viszont a dict.cc angolról és németről számos más nyelvre képes fordítani, így csak egy picit kellett megpiszkálni a workflowt ahhoz, hogy angol<->magyar és angol<->lengyel irányokban is fordítson:

dict_cc-en-hu

dict_cc-hu-en

dict_cc-en-pl

dict_cc-pl-en

Újabb forrás->cél nyelv hozzáadásához csak újabb script filtert kell létrehozni:

dict_cc-definitions

amiben csak ezeket kell cserélgetned:

dict_cc-script-filter-details

A workflow-t szedheted tőlem, vagy a github forkból.

Mese az Excelről és a context menüről

TL;DR: 2010-es Excelnél újabb verzióban soha ne használd a Workbook_SheetBeforeRightClick() event handlert arra, hogy saját CommandBart hozz létre - helyette ott a Custom UI editor for Microsoft Office, amivel ugyan csak bedrótozott hierarchiát tudsz csinálni, viszont cserébe nem fagy majd random szénné alatta a host környezet.

A dolog úgy indult, hogy egy Office update után elkezdett furán viselkedni a VBA kód pár táblában. Jó szokás szerint a hibajelenségnek semmi köze nem volt a hiba okához, a Microsoftos alkalmazásnak pedig esze ágában sem volt bármiféle notificationt küldeni, hogy neki XY kóddarabbal lenne baja, sokkal inkább a számukra már sokszor bevált utat választba, nemes egyszerűséggel vagy rommá fagyasztotta a futtató környezetet, vagy a teljes Excel UI elfelejtett a végfelhasználóval kommunikálni. Mutatom:

Excel 2010+ event handler madness from Gabor Penoff on Vimeo.

A videóban jól látszik, hogy a testData tábla kiválasztása után az megnyílik, majd az Excel előbb mintha elfelejtené a screent update-elni, később viszont teljesen meggárgyul és a saját UI elemei is megszűnnek működni.

Nézzük végig, mi történik belül. A 2. kattintásra a standard context menünek kellene előbújnia, azonban én ezt elkapom és a saját cuccaimat pakolom a gyári menü helyére. Mindez úgy történik, hogy a Workbook_SheetBeforeRightClick() event handlert használom:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
    rightClickMenuShow (rightClickMenuTitle)
    Cancel = RightClickCancel
End Sub

A rightClikMenuShow() törli az előző custom menüt, majd újra létrehozza és megjeleníti:

Sub rightClickMenuShow(rightClickMenuName As String)
    RightClickCancel = True
    Call rightClickMenuDelete(rightClickMenuName)
    Call rightClickMenuCreate(ActiveSheet)
    CommandBars(rightClickMenuTitle).ShowPopup
End Sub

A törlés így néz ki:

Sub rightClickMenuDelete(rightClickMenuName As String)
    Dim bar As CommandBar
 
    For Each bar In CommandBars
        If UCase(Trim(bar.Name)) = UCase(Trim(rightClickMenuTitle)) Then bar.Delete
    Next bar
End Sub

Az új menü létrehozása pedig így:

Sub rightClickMenuCreate(S_Caller As Worksheet)
    Dim rightClickMenuName As String
    Dim rightClickMenuIndex As Long
 
    rightClickMenuName = rightClickMenuTitle
    Call rightClickMenuDelete(rightClickMenuName)
    Application.CommandBars.Add Name:=rightClickMenuName, Position:=msoBarPopup
 
    rightClickMenuIndex = 0
    rightClickMenuIndex = rightClickMenuIndex + 1
    CommandBars(rightClickMenuName).Controls.Add Type:=msoControlButton, Before:=rightClickMenuIndex
    With CommandBars(rightClickMenuName).Controls(rightClickMenuIndex)
        .FaceId = 263
        .Style = msoButtonIconAndCaption
        .Caption = "Excel's &Default Shortcut Menu"
        .OnAction = "ShowDefaultRightClickMenu"
    End With
 
    rightClickMenuIndex = rightClickMenuIndex + 1
    CommandBars(rightClickMenuName).Controls.Add Type:=msoControlButton, Before:=rightClickMenuIndex
    With CommandBars(rightClickMenuName).Controls(rightClickMenuIndex)
        .Style = msoButtonCaption
        .Caption = "Freeze me please"
        .OnAction = "myTestSub"
        .BeginGroup = True
    End With
End Sub

Röviden ennyi a jobb klikkes menüből a myTestSub() makrót elindító event handler mechanizmus. Miután ebben hozzá nem nyúlok a képernyő frissítését szabályozó Application.ScreenUpdating metódushoz, nézzük meg, mit csinál a myTestSub():

Sub myTestSub()
    Dim f As Variant
 
    f = Application.GetOpenFilename
    If f = False Then
        MsgBox "No file selected."
    Else
        Workbooks.Open Filename:=f, ReadOnly:=True
    End If
End Sub

Láthatóan ennek sincs köze a ScreenUpdating-hez, mégis elpusztul tőle az Excel.
Miután a probléma nyilván nem egy ilyen ~20 soros toolban jött elő, pár órát elvett az életemből mire rájöttem, hogy az 2010-es verziónál frissebb Exceleknek azzal van baja, ahogyan én a right click menüt újradefiniálom a Workbook_SheetBeforeRightClick() event handlerben egy CommandBars(rightClickMenuTitle).ShowPopup() hívással. A helyes megoldás ilyenkor az, hogy ezt a popup generátort úgy ahogy van kidobod és létrehozol egy XML-t, ami a fenti két eljárás meghívásához legyártja majd az UI eleme(ke)t a jobb klikkre megjelenő context menüben:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <contextMenus>
        <contextMenu idMso="ContextMenuCell">
            <menu id="appMenu" label="engine" insertBeforeMso="Cut">
                <button id="item_id1" label="(Do not) freeze me please" onAction="myTestSub"/>
            </menu>
        </contextMenu>
    </contextMenus>
</customUI>

Ebben az esetben azonban ne felejtsd el, hogy fel kell készíteni a hívott rutinodat az IRibbonControl paraméter fogadására:

Sub myTestSub(control As IRibbonControl)

Tanulság nincs, csak ledokumentáltam 4 óra őrjöngés után a megoldást.

CIB e-bank bug

Mostanában többször csinálja azt, hogy az első tranzakció végrehajtása után egy csomó UI control elfelejt működni:

CIB e-bank bug from Gabor Penoff on Vimeo.

Ilyenkor csak az applet reload segít, ami ezután "hálából" nem tud authentikálni a mobilToken által adott OTP kulccsal, csak majd úgy 5 perc múlva. So 2016!

Autodesk Fusion 360 bug: canvas disappears on Edit Sketch command

Preface: in order to eliminate double work (=documenting the bug to myself and report it to Autodesk Fusion 360 devteam) I decided to continue these posts in english.

I have found another bug in Autodesk Fusion 360.

Release

2016 february, version: 2.0.1909

The bug

Here is what I did:

- created a new component
- inserted a canvas
- created a new sketch based on the canvas
- extruded the sketch
- created a new sketch on the other side of the extruded body
- inserted another canvas on the secondary sketch’s plane
- tried to re-edit the secondary sketch by using the secondary canvas as guide

The result:

Fusion 360 hides the secondary canvas which would act as the guide for my secondary sketch.

Autodesk Fusion 360 bug: second canvas disappear on edit sketch command within a component from Gabor Penoff on Vimeo.

Solution

Unfortunately I have no idea how to fix this issue.
It's just a historical issue. As it clearly visible on the screencast I made the secondary sketch first and the secondary canvas later. When I start editing the sketch the timeline rolls back to the point when the secondary canvas did not exist yet. The solution is to create the secondary canvas earlier than the secondary sketch.

2015 képekben

Ez (is) történt tavaly velünk, 50 képben elmesélve.

Január

Volt sok szép napkelténk:

20150106-0520

Boldog volt minden állat:

20150108-2263

20150113-0598

20150115-2351

A sok hó dacára:

20150127-0538

megint átúszták a bátrak a Visztulát:

20150125-0657

Február

A hónap elején ennek éltünk:

20150206-0831

Meg ennek:

20150206-0872

Aztán miután hazajöttünk, egy este felmásztam a tetőre:

20150220-0555

Március

Tamás elhívott ide dolgozni:

20150304-1119

Végre megerestem Krakkóban ezt a tavat:

20150319-1174

Április

Elmentünk ide:

20150409-1389

20150412-1458

Enni ilyet:

20150410-0907

Fotózni ilyen kisembert:

20150410-0951

Nézni bután ezekre:

20150410-1421

meg csodálattal erre:

20150410-1423

csalódni ebben:

20150411-1001

Azért hazaérve teszteltünk ilyet:

20150415-1503

meg pár ilyet:

20150427-1603

Május

Jöttek a cimbik és néztük a nagy tükröt a fejünk felett itt:

20150502-1730

Kóstoltuk a helyi söröket:

20150502-1720

Felmentünk a lufival körülnézni:

20150502-1750

Jöttek a nördök:

20150522-2417

Főztünk együtt ilyet:

20150524-2427

Néztünk suhanó hangtalan gépeket:

20150530-1359

És nyárnyitó parádét:

20150530-1398

Június

Dormi ijesztően sovány lett:

20150614-2030

Kis színes virágok nyíltak a semmiből:

20150617-2044

a teraszon:

20150617-2051

Végre megmásztam a Mária templomot:

20150625--2

Július

Nagy hőség jött:

20150707-2209

és vele sok nagy vihar is:

20150708-2211

Szép volt a málna a piacon:

20150713-1484

Augusztus

Elmentünk ide:

20150816-2354

ezt csinálni:

20150817-7

meg ezt:

20150818-23

Szeptember

Megnéztük végre Petiékkel az állatkertet:

20150905-1581

és rászoktunk a rumra:

20150917-0014

Majdnem lett még egy cicánk:

20150919-2578

Október

Kutyáztunk a híd alatt:

20151001-0104

Csodálkoztunk a sosem látott alacsony Dunán:

20151003-0137

Megint elmentünk ezt inni:

20151005-0154

e mellé:

20151009-0219

Szokatlanul szép volt az ősz:

20151024-0559

November

Még november is kellemes meleg volt egy darabig:

20151114-0656

Majd leesett a hó:

20151124-0690

December

Főztünk a teraszon egy halat:

20151215-0797

aztán gyors hazamentünk:

20151229-2161

aztán vissza, az év végét ünnepelni a barátokkal:

20151231-0929

Autodesk Fusion 360 bug: unexpected component deactivation

Újabb bugot találtam az Autodesk Fusion 360-ban.

Release

2016 januári verzió: 2.0.1,870

A bug

A következőket csináltam:

  • nyitottam egy új designt
  • gyártottam 4 új komponenst
  • létrehoztam egy új, üres szülő komponenst és az előbbi 4 gyerek komponenst belemásoltam
  • aktiváltam az egyik gyerek komponenst
  • az előbb aktivált gyerek komponensen beleszerkesztettem az egyik létező Sketch-be

Az eredmény:

A Sketch szerkesztés befejeztével a Fusion 360 összecsukja a komponens hierarchiát és deaktiválja a szerkesztett gyerek komponenst. Ez különösen veszélyes tud lenni, mivel ha tovább dolgozol anélkül, hogy észrevennéd, hogy már nem a gyerek komponens az aktív, akkor a továbbiakban végzett lépések nem a gyerek komponensek timeline-jára kerülnek, így lényegében lőttek az átlátható timeline historynak és utólag nagyon nehéz lesz változtatni a munkádon úgy, hogy az átlátható maradjon.

Autodesk Fusion 360 bug: end of sketch modification collapses component hierarchy and deselects active component from Gabor Penoff on Vimeo.

Megoldás

Sajna egyelőre nem tudok. Egyszer csak gondol egyet az alkalmazás és onnantól így viselkedik, de meg tépheted a hajad.

Autodesk Fusion 360 bug: hierarchical component capture

Feleim, új sorozat indul a blogon a Fusion360 kategória alatt "Autodesk Fusion 360 bug" címmel.

Preface

Évi 300 EUR-t fizetek azért, hogy ezt a szoftvert használjam. Több tucatnyi hibajelentést küldtem a gyártónak, nem sajnáltam az időt a részletes leírásra akkor sem, ha épp felforrt az agyam, mert az alkalmazás kifagyott munka közben. Dokumentáltam mindent szépen, ahogy illik.
Az elején még jött tőlük pár feedback, aztán a visszajelzések szép lassan elmaradtak, én meg egyre frusztráltabb lettem ettől, különösen azért, mert egyre inkább azt érzem, hogy fizetek azért, hogy bétatesztelhessek.

A rengeteg hibája ellenére Mac OS X-en a Fusion 360 még mindig messze a legkényelmesen kezelhető CAD/CAM alkalmazás, azonban kezdem azt érezni, hogy pár komponensnél komplexebb modellek összeállításához még mindig csak idegnyugtató használatával együtt alkalmas.

Release

2016 januári verzió: 2.0.1,870

A bug

A következőket csináltam:

  • nyitottam egy új designt
  • létrehoztam négy darab, egymástól független gyerek komponenst
  • csináltam egy üres szülő komponenst és a négy gyerek komponenst bepakoltam a szülő komponensbe
  • kinyitottam egy korábbi designt
  • az új designből az 1+4 komnponenst tartalmazó hierarchiát átmásoltam a régi designba
  • a régi designban a 4 gyerek komponenst a megfelelő pozícióba mozgattam
  • a Ground paranccsal megpróbáltam rögzíteni a komponensek pozícióját

Az eredmény: a ground parancs az új designban kreált elrendezést rögzíti ahelyett, hogy a régi designban utoljára beállított komponens pozíciót tárolná el.

Autodesk Fusion 360 bug: capture component position scatters hierarchical components from Gabor Penoff on Vimeo.

Megoldás

Sajna egyelőre nem tudok. Egyszer csak gondol egyet az alkalmazás és onnantól így viselkedik, de meg tépheted a hajad.