[{"data":1,"prerenderedAt":587},["ShallowReactive",2],{"article-tool-ditto":3},{"article":4,"tags":114,"previous":129,"next":281},{"id":5,"title":6,"author":7,"body":8,"createdAt":102,"description":103,"extension":104,"img":105,"meta":106,"navigation":107,"path":108,"seo":109,"stem":110,"tags":111,"updatedAt":102,"__hash__":113},"articles\u002Farticles\u002Ftool-ditto.md","Tool Tip Ditto Must Have","[object Object]",{"type":9,"value":10,"toc":99},"minimark",[11,15,18,63,77,84,93,96],[12,13,14],"p",{},"Ditto is an extension to the standard windows clipboard. It saves each item placed on the clipboard allowing you access to any of those items at a later time. Ditto allows you to save any type of information that can be put on the clipboard, text, images, html, custom formats, ..... The features below are simple and just worth repeating within this entry.",[12,16,17],{},"Features",[19,20,21,25,28,31,34,37,40,43,46,49,52],"ul",{},[22,23,24],"li",{},"Easy to use interface",[22,26,27],{},"Search and paste previous copy entries",[22,29,30],{},"Keep multiple computer's clipboards in sync",[22,32,33],{},"Data is encrypted when sent over the network",[22,35,36],{},"Accessed from tray icon or global hot key",[22,38,39],{},"Select entry by double click, enter key or drag drop",[22,41,42],{},"Paste into any window that excepts standard copy\u002Fpaste entries",[22,44,45],{},"Display thumbnail of copied images in list",[22,47,48],{},"Full Unicode support(display foreign characters)",[22,50,51],{},"UTF-8 support for language files(create language files in any language)",[22,53,54,55,62],{},"Uses sqlite database (",[56,57,61],"a",{"href":58,"rel":59},"http:\u002F\u002Fwww.sqlite.org",[60],"nofollow","www.sqlite.org",")",[12,64,65,66,71,72,76],{},"The extension can be found at ",[56,67,70],{"href":68,"target":69},"https:\u002F\u002Fditto-cp.sourceforge.io\u002F","_blank","Ditto","  Source code and issues are tracked via ",[56,73,75],{"href":74,"target":69},"https:\u002F\u002Fgithub.com\u002Fsabrogden\u002FDitto","github","  Written in c++",[12,78,79],{},[80,81],"img",{"alt":82,"src":83},"","\u002Farticles\u002Fimages\u002Fditto.png",[12,85,86,87,90],{},"I use this extension daily on all my workstations.  I am able to Copy (Ctrl-C) anything and then use keyboard shortcut Alt-Z to show the last x number (confiburable) of copies display in a pop-up.",[88,89],"br",{},[80,91],{"alt":82,"src":92},"\u002Farticles\u002Fimages\u002Fditto_screen1.png",[12,94,95],{},"Anything in ditto can be found by searching in the open dialog box.  This feature is invaluable when trying to find content from a couple of days ago.  Ditto starts on system startup and is always just available.",[12,97,98],{},"I have tried other clipboard manager tools, but this one is just small, easy and allows me copy\u002Fpaste text, code, images from days in the past.",{"title":82,"searchDepth":100,"depth":100,"links":101},2,[],"2021-12-05","Clipboard utility that is a must have.  Easy to use interface, search and paste previous copy entries, keep multiple computer's clipboards in sync, accessed from tray icon or global hot key, display a thumbnail of copied images etc.","md","\u002Farticles\u002Fimages\u002Fditto1.png",{},true,"\u002Farticles\u002Ftool-ditto",{"title":6,"description":103},"articles\u002Ftool-ditto",[112],"tools","ffOa-BrPCpCv3DthBZ8NpYKGXC5GM95KYDG6MZjz1Sw",[115],{"id":116,"title":117,"body":118,"description":122,"extension":104,"img":123,"meta":124,"name":112,"navigation":107,"path":125,"seo":126,"stem":127,"__hash__":128},"tags\u002Ftags\u002Ftools.md","Tools",{"type":9,"value":119,"toc":120},[],{"title":82,"searchDepth":100,"depth":100,"links":121},[],"Any sort of tip, script or function to make your job easier","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1598313183973-4effcded8d5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80",{},"\u002Ftags\u002Ftools",{"description":122},"tags\u002Ftools","o44aMhD358lxjNB-QBcxIrP7aURCo_L0OIiw3TTU3PY",{"id":130,"title":131,"author":7,"body":132,"createdAt":102,"description":272,"extension":104,"img":273,"meta":274,"navigation":107,"path":275,"seo":276,"stem":277,"tags":278,"updatedAt":102,"__hash__":280},"articles\u002Farticles\u002Fflutter-tips1.md","Flutter Tips 1",{"type":9,"value":133,"toc":270},[134,137],[12,135,136],{},"Tips and Tricks",[138,139,140,154,173,179,245,248,264],"ol",{},[22,141,142,143,145,148,150,151,153],{},"Create application icons via online resource for Android and IOS platforms",[88,144],{},[80,146],{"alt":82,"src":147},"\u002Farticles\u002Fimages\u002Fappicongenerator.png",[88,149],{},"android\u002Fapp\u002Fsrc\u002Fmain\u002Fres (copy all midmap)",[88,152],{},"ios\u002Frunner\u002Fassets.xcassets (copy all files to this xcassets from the download from appicongenerator tool)",[22,155,156,157],{},"Android recently starting putting round images around your uploaded icon.  If you want to modify the           uploaded icon you can manipulate with Android Studio (right clicking on android\u002Fapp\u002Fsrc\u002Fmain\u002Fres folder).      See option New Image Asset? If you do not (like me), I had to perform the following steps in order to see      this option.",[19,158,159,162,165],{},[22,160,161],{},"Close Android Studio (for my Flutter project)    then reopen the Android folder",[22,163,164],{},"Options were available to update Gradle (in my case from 4.x to 7.x), I chose yes.",[22,166,167,168,170],{},"Once finished this update, New Image Asset was option when I right clicked on the res folder (as a test I returned to my parent Flutter parent folder but did not have this option once again)  So for me to see this Image Asset option I had to open with Android Studio the Android folder directly within my Flutter project.",[88,169],{},[80,171],{"alt":82,"src":172},"\u002Farticles\u002Fimages\u002Fflutter_tip1_newimageasset.png",[22,174,175,176],{},"Use Android Studio Image Asset to resize icon's as desired to fit or fill the Android square, using the Scaling - Resize option in the dialog window.\n",[80,177],{"alt":82,"src":178},"\u002Farticles\u002Fimages\u002Fandroidstudio_imageasset.png",[22,180,181,182],{},"Developer resources",[19,183,184,190,196,202,208,214,220,226,233,239],{},[22,185,186],{},[56,187,188],{"href":188,"rel":189},"https:\u002F\u002Ficons8.com",[60],[22,191,192],{},[56,193,194],{"href":194,"rel":195},"https:\u002F\u002Fvecteezy.com",[60],[22,197,198],{},[56,199,200],{"href":200,"rel":201},"https:\u002F\u002Fappicon.co\u002F",[60],[22,203,204],{},[56,205,207],{"href":206,"target":69},"https:\u002F\u002Ffonts.google.com\u002Ficons?selected=Material+Icons","Google Material Icons",[22,209,210],{},[56,211,213],{"href":212,"target":69},"https:\u002F\u002Fwww.materialpalette.com\u002F","Material Palette",[22,215,216],{},[56,217,218],{"href":218,"rel":219},"https:\u002F\u002Fmaterial.io",[60],[22,221,222],{},[56,223,225],{"href":224,"target":69},"https:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fflutter-layout-cheat-sheet-5363348d037e","Flutter Layout Cheatsheet",[22,227,228,232],{},[56,229,231],{"href":230,"target":69},"https:\u002F\u002Ffonts.google.com\u002F","Google Fonts"," (free for commercial use)",[22,234,235],{},[56,236,238],{"href":237,"target":69},"https:\u002F\u002Fdribbble.com\u002F","Creative Ideas",[22,240,241],{},[56,242,243],{"href":243,"rel":244},"https:\u002F\u002Fwww.colorzilla.com\u002F",[60],[22,246,247],{},"If hot reload is not working for you, remember that it only       works when you change something within a Stateful Widget.",[22,249,250,251,253,257,259,260],{},"Null safety error messages",[88,252],{},[254,255,256],"em",{},"\"lib\u002Fmain.dart:8:19: Error: Null safety features are disabled for this library.\nTry removing the package language version or setting the language version to 2.12 or higher.\nconst MyApp({Key? key}) : super(key: key);\"",[88,258],{},"Open pubspec.yaml and change to  ",[261,262,263],"strong",{},"sdk: \">=2.12.0 \u003C 3.0.0\"",[22,265,266,269],{},[261,267,268],{},"Ctrl-q"," shows quick docs within Intelli J",{"title":82,"searchDepth":100,"depth":100,"links":271},[],"Series of tips and tricks related to Flutter mobile platform from Google","\u002Farticles\u002Fimages\u002Fflutter_small.png",{},"\u002Farticles\u002Fflutter-tips1",{"title":131,"description":272},"articles\u002Fflutter-tips1",[279],"flutter","RV1o32MPObtGs1CFr_GYKGsTtQv9W6HwBn1rJRz6hgE",{"id":282,"title":283,"author":7,"body":284,"createdAt":578,"description":579,"extension":104,"img":580,"meta":581,"navigation":107,"path":582,"seo":583,"stem":584,"tags":585,"updatedAt":578,"__hash__":586},"articles\u002Farticles\u002Frename-sql-server-schema.md","Rename SQL Server Schema",{"type":9,"value":285,"toc":576},[286,289,292,572],[12,287,288],{},"Copying SQL Databases, renaming is not as easy as it could be.  Luckily the following script can make the effort much easier.  Give it a try.",[12,290,291],{},"After copying a SQL Server database I needed to create a new schema and transfer all tables and views and stored procedures\nfrom the old schema to the newly created schema.  Using the following script made this task much easier.",[293,294,298],"pre",{"className":295,"code":296,"language":297,"meta":82,"style":82},"language-sql shiki shiki-themes github-light github-dark","DECLARE @OldSchema AS varchar(255)\nDECLARE @NewSchema AS varchar(255)\n\nSET @OldSchema = 'dbo'\nSET @NewSchema = 'StackOverflow'\n\nDECLARE @sql AS varchar(MAX)\n\nDECLARE @Schema AS varchar(MAX)\nDECLARE @Obj AS varchar(MAX)\n\n-- First transfer Tables and Views\n\nDECLARE CU_OBJS CURSOR FOR\nSELECT TABLE_SCHEMA, TABLE_NAME\nFROM INFORMATION_SCHEMA.TABLES\nWHERE TABLE_SCHEMA = @OldSchema\n\nOPEN CU_OBJS\n\nFETCH NEXT FROM CU_OBJS\nINTO @Schema, @Obj\n\nWHILE @@FETCH_STATUS = 0\nBEGIN\nSELECT @sql = 'ALTER SCHEMA [' + @NewSchema + '] TRANSFER [' + @OldSchema + '].[' + @Obj + ']'\nPRINT @sql\n--  EXEC (@sql)\n\n    FETCH NEXT FROM CU_OBJS\n    INTO @Schema, @Obj\nEND\n\nCLOSE CU_OBJS\nDEALLOCATE CU_OBJS\n\n\n-- Now transfer Stored Procedures\n\nDECLARE CU_OBJS CURSOR FOR\nSELECT sys.schemas.name, sys.procedures.name\nFROM sys.procedures,sys.schemas\nWHERE sys.procedures.schema_id=sys.schemas.schema_id and sys.schemas.name = @OldSchema\n\nOPEN CU_OBJS\n\nFETCH NEXT FROM CU_OBJS\nINTO @Schema, @Obj\n","sql",[299,300,301,309,314,320,326,332,337,343,348,354,360,365,371,376,382,388,394,400,405,411,416,422,428,433,439,445,451,457,463,468,474,480,486,491,497,503,508,513,519,524,529,535,541,547,552,557,562,567],"code",{"__ignoreMap":82},[302,303,306],"span",{"class":304,"line":305},"line",1,[302,307,308],{},"DECLARE @OldSchema AS varchar(255)\n",[302,310,311],{"class":304,"line":100},[302,312,313],{},"DECLARE @NewSchema AS varchar(255)\n",[302,315,317],{"class":304,"line":316},3,[302,318,319],{"emptyLinePlaceholder":107},"\n",[302,321,323],{"class":304,"line":322},4,[302,324,325],{},"SET @OldSchema = 'dbo'\n",[302,327,329],{"class":304,"line":328},5,[302,330,331],{},"SET @NewSchema = 'StackOverflow'\n",[302,333,335],{"class":304,"line":334},6,[302,336,319],{"emptyLinePlaceholder":107},[302,338,340],{"class":304,"line":339},7,[302,341,342],{},"DECLARE @sql AS varchar(MAX)\n",[302,344,346],{"class":304,"line":345},8,[302,347,319],{"emptyLinePlaceholder":107},[302,349,351],{"class":304,"line":350},9,[302,352,353],{},"DECLARE @Schema AS varchar(MAX)\n",[302,355,357],{"class":304,"line":356},10,[302,358,359],{},"DECLARE @Obj AS varchar(MAX)\n",[302,361,363],{"class":304,"line":362},11,[302,364,319],{"emptyLinePlaceholder":107},[302,366,368],{"class":304,"line":367},12,[302,369,370],{},"-- First transfer Tables and Views\n",[302,372,374],{"class":304,"line":373},13,[302,375,319],{"emptyLinePlaceholder":107},[302,377,379],{"class":304,"line":378},14,[302,380,381],{},"DECLARE CU_OBJS CURSOR FOR\n",[302,383,385],{"class":304,"line":384},15,[302,386,387],{},"SELECT TABLE_SCHEMA, TABLE_NAME\n",[302,389,391],{"class":304,"line":390},16,[302,392,393],{},"FROM INFORMATION_SCHEMA.TABLES\n",[302,395,397],{"class":304,"line":396},17,[302,398,399],{},"WHERE TABLE_SCHEMA = @OldSchema\n",[302,401,403],{"class":304,"line":402},18,[302,404,319],{"emptyLinePlaceholder":107},[302,406,408],{"class":304,"line":407},19,[302,409,410],{},"OPEN CU_OBJS\n",[302,412,414],{"class":304,"line":413},20,[302,415,319],{"emptyLinePlaceholder":107},[302,417,419],{"class":304,"line":418},21,[302,420,421],{},"FETCH NEXT FROM CU_OBJS\n",[302,423,425],{"class":304,"line":424},22,[302,426,427],{},"INTO @Schema, @Obj\n",[302,429,431],{"class":304,"line":430},23,[302,432,319],{"emptyLinePlaceholder":107},[302,434,436],{"class":304,"line":435},24,[302,437,438],{},"WHILE @@FETCH_STATUS = 0\n",[302,440,442],{"class":304,"line":441},25,[302,443,444],{},"BEGIN\n",[302,446,448],{"class":304,"line":447},26,[302,449,450],{},"SELECT @sql = 'ALTER SCHEMA [' + @NewSchema + '] TRANSFER [' + @OldSchema + '].[' + @Obj + ']'\n",[302,452,454],{"class":304,"line":453},27,[302,455,456],{},"PRINT @sql\n",[302,458,460],{"class":304,"line":459},28,[302,461,462],{},"--  EXEC (@sql)\n",[302,464,466],{"class":304,"line":465},29,[302,467,319],{"emptyLinePlaceholder":107},[302,469,471],{"class":304,"line":470},30,[302,472,473],{},"    FETCH NEXT FROM CU_OBJS\n",[302,475,477],{"class":304,"line":476},31,[302,478,479],{},"    INTO @Schema, @Obj\n",[302,481,483],{"class":304,"line":482},32,[302,484,485],{},"END\n",[302,487,489],{"class":304,"line":488},33,[302,490,319],{"emptyLinePlaceholder":107},[302,492,494],{"class":304,"line":493},34,[302,495,496],{},"CLOSE CU_OBJS\n",[302,498,500],{"class":304,"line":499},35,[302,501,502],{},"DEALLOCATE CU_OBJS\n",[302,504,506],{"class":304,"line":505},36,[302,507,319],{"emptyLinePlaceholder":107},[302,509,511],{"class":304,"line":510},37,[302,512,319],{"emptyLinePlaceholder":107},[302,514,516],{"class":304,"line":515},38,[302,517,518],{},"-- Now transfer Stored Procedures\n",[302,520,522],{"class":304,"line":521},39,[302,523,319],{"emptyLinePlaceholder":107},[302,525,527],{"class":304,"line":526},40,[302,528,381],{},[302,530,532],{"class":304,"line":531},41,[302,533,534],{},"SELECT sys.schemas.name, sys.procedures.name\n",[302,536,538],{"class":304,"line":537},42,[302,539,540],{},"FROM sys.procedures,sys.schemas\n",[302,542,544],{"class":304,"line":543},43,[302,545,546],{},"WHERE sys.procedures.schema_id=sys.schemas.schema_id and sys.schemas.name = @OldSchema\n",[302,548,550],{"class":304,"line":549},44,[302,551,319],{"emptyLinePlaceholder":107},[302,553,555],{"class":304,"line":554},45,[302,556,410],{},[302,558,560],{"class":304,"line":559},46,[302,561,319],{"emptyLinePlaceholder":107},[302,563,565],{"class":304,"line":564},47,[302,566,421],{},[302,568,570],{"class":304,"line":569},48,[302,571,427],{},[573,574,575],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":82,"searchDepth":100,"depth":100,"links":577},[],"2020-10-13T13:50:59.878Z","Copying SQL Databases, renaming is not as easy as it could be.  Luckily the following script can make the effort much easier.  Give it a try. After copying a SQL Server database I needed to create a new schema and transfer all tables and views and stored procedures from the old schema to the newly created schema.  Using the following script made this task much easier.","\u002Farticles\u002Fimages\u002Fsingleton_thumb.png",{},"\u002Farticles\u002Frename-sql-server-schema",{"title":283,"description":579},"articles\u002Frename-sql-server-schema",[297],"mvDlpJpU00m0MVu_Frr5AdZnQYdcoEq59ox8SmjvJgs",1781574768792]