sábado, 22 de enero de 2022

Joining PDFs into a single file


One of the easiest ways to join a number of PDFs into a single file is to use the pdftk command.

A pdftk command to join a number of PDFs into a single file might look like this:


$ pdftk recipe-1.pdf recipe-2.pdf recipe-3.pdf recipe-4.pdf recipe-5.pdf cat output recipes.pdf

You can use a wildcard if your files follow a regular pattern like this:

$ pdftk recipe-*.pdf cat output recipes.pdf 
 
https://www.networkworld.com/article/3609508/creating-and-merging-pdfs-on-linux.html 
 workaround
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk 

miércoles, 5 de enero de 2022

Visual Studio Crashes and How to Recover a Corrupted .cs File

https://www.samnoble.co.uk/2014/11/30/visual-studio-crashes-and-a-corrupted-cs-file/

Visual Studio Crashes and How to Recover a Corrupted .cs File

In spite of using source control, sometimes it’s still possible to lose work due to the quirks of computers. At least you can mitigate this and only suffer losing a few hours of work, but still, when those few hours were a stroke of genius, the likes of which cannot be reproduced, you can’t help but shed a tear when all is lost. But fear not, here are 4 techniques that you can try to recover your code with before crying.

Lately I’ve used VirtualBox to run Windows 8.1 on my Mac Book Air under Mavericks. My Parallels license expired and I wanted to check out the alternatives. So far it’s been a pleasure to use but recently I’ve experienced it falling over, taking OSX down with it. I’ve probably seen the Grey Screen of Death twice over the last 6 years of using a Mac but have seen it twice in the last week.

It’s generally not a problem, just a minor inconvenience, until last night. Just as I’m about to wrap up for the day after making some great progress, everything comes crashing down. Once everything is back up and running, I couldn’t open one of my .cs files. Visual Studio would launch Notepad.exe which would display a seemingly empty file, although I could still make text selections:

1. Empty Notepad

However Explorer reported the file as being 30Kb…

2. Filesize

This gave me hope, the data is still there! It’s probably just a case of a dodgy character somewhere in the file as a result of the crash. What does Notepad++ say?

4. Notepad++

Ok this is looking really bad. Back to Visual Studio, right-click the file in Solution Explorer -> Open With… -> Binary Editor.

3. Binary Content

Oh dear. This doesn’t look good. Apparently it’s a common problem and most likely due the crash occurring whilst that file was being written to on the disk, although in the 10 years that I’ve been working with Visual Studio this is the first time I’ve experienced it. There’s not much one can do to guard against this, other than diagnosing and fixing the cause for Virtualbox crashing, but that’s a whole new problem.

No point crying over spilt milk, let’s just get this fixed! First thing’s first, do not attempt to build your project again as we may need to use the output of the last build to recover your files!

Solution 1 – Decompile

If you have a recent build of your project, you can recover the code from the generated binaries using something like ILSpy (open source) or Dotpeek (free).

https://www.jetbrains.com/decompiler/

If you search around the web for ‘Visual Studio corrupted file’, this is most likely the first solution you’ll find and is often touted as the only solution. Whilst it’s a perfectly practical solution and perhaps your only option, for me it’s a last resort for the following reasons:

  1. All comments and regions are removed.
  2. The code structure will have been lost.
  3. Depending on your build configuration, some optimisation may have taken place.
  4. Doesn’t really help if the code has been obfuscated.

I’m sure you’ll agree it’s better than nothing. If you don’t have any assemblies or you want to try to restore the file to its original awesomeness, continue on.

Solution 2 – AutoRecovery

If you have AutoRecovery enabled, you might be lucky enough to find a backup of the file. Chances are that Visual Studio would’ve prompted you to restore the corrupted file when launching it after the crash. Anyway it’s still worth checking the backup folder for your project, in:

%USERPROFILE%DocumentsVisual Studio [Version]Backup Files[Solution Name]

No dice for me, this directory was empty for me, on to the next solution.

Solution 3 – CHKDSK

Depending on the particulars of the corruption, trusty old chkdsk might help. It might be wise to attempt Solution 4 first to minimise the chances of any data being overwritten.

From an elevated command prompt execute:

chkdsk /f

You’ll receive a message that the drive is locked and the operation will need to be performed on the next restart. Just say ok and restart your machine. Depending on your setup, it could take a while for this to run so be patient.

Solution 4

This was the solution that worked for me and allowed me to recover the full content of my file! I used the free recovery software Recuva. Either use this or whatever you prefer, although instructions here are for Recuva.

Whilst Recuva is primarily for recovering deleted files and this isn’t technically a deleted file, we’re facing a similar challenge. The file is corrupt and pointing to the wrong clusters on the HDD, thus when we load our file it’s loading garbage instead of the correct content.

My first process was:

  1. Launched Recuva and used the Wizard to scan the folder containing my source files. After a few minutes it showed me an empty results window. Not looking good…
  2. Click on the ‘Options…’ button in the top right hand corner of the window.
  3. In the ‘Actions’ tab select the following: 5. Recuva Options
  4. Hit the ‘Ok’ button.

At this point Recuva started updating the results view, but it still remained empty! Sad face. In a last-ditch effort I quit Recuva, navigated to the source directory in Explorer, right-click, ‘Scan for deleted files’.

Some more dialogs popped up, scanning the drive again until boom, a results view that displayed the contents of the folder, including all the sub-directories. This looks good!

I scrolled down to the file in question and read across the row: ‘Not deleted, Not overwritten’ etc. On the right of the screen there’s a tabbed preview pane. There was no preview available, the ‘Info’ tab looked normal but the ‘Header’ tab was where the magic was!

6. Recovered File

Right click the file in the results pane, ‘Recover Highlighted…’, save to desktop and bingo, fully recovered file. Thanks Recuva!

If you’re ever unlucky to encounter this issue, probably just as you’re about to pack up to go home or preparing for a big tech demo at an investor pitch, one of these solutions will get you unstuck.

If you have any other tips, share them in the comments and I’ll add them to the post.

Edit: Reader ‘bizh’ provided an additional step to Solution 4 if it doesn’t work out fully. I haven’t tested this so proceed at your own risk:

If Recuva is empty, you can delete the corrupted file and then run Recuva. In that case Recuva will definitely find the file and recover the clean version of it

Bizh

martes, 21 de diciembre de 2021

How to export a MS SQL Server database to a SQL script (database to sql file) with Microsoft SQL Server

Generating .sql file of your database with data

SQL Server Management Studio provides the ability to generate scripts for creating databases, tables, stored procedures, functions, views and inserting data. For smaller amounts of data, this method can be used to send table structures and/or data to Scribe Support for testing purposes.

To proceed, Open SSMS and access the database engine with the default Windows authentication (or from the connection that you want to access):

SQL Server Management Studio SSMS Login

Connect to the server and explore the databases in the object explorer. In our case, we want to export the my_database database, that, as you can see, is available in the Databases directory:

SQL Server Management Studio Database Viewer 

Do right click on the database and select Tasks and then on Generate Scripts:

Generate Scripts SQL Server

This will open the Generate and Publish Scrips dialog. As first step, define which tables of the database you want to export, optionally you can script the entire database and objects:

Export Tables MS SQL Server Management Studio

After confirm which tables do you want to export, proceed to define if you want a single file per table or everything in a single file. If you go to the advanced scripting options, you can define the types of data to script, this means if you want to include the data on the file directly or only the structure of the database:

SQL Server Export Data and Structure

Finally, the export will begin and you will see the success message at the end:

Success SQL Server Script Structure and Data Export

 

 

https://ourcodeworld.com/articles/read/846/how-to-export-a-ms-sql-server-database-to-a-sql-script-database-to-sql-file-with-microsoft-sql-server-management-studio-17

sábado, 4 de diciembre de 2021

SQL Dump File Splitter

 https://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/

Scenario: You are a conscious user and you back up your site’s database every once in a while. And you sit smiling and content knowing that your precious data is safe. Just to discover after disaster strikes that you can’t restore the contents of the SQL dump file because of upload size limitations or because phpMyAdmin would run out of memory while decompressing the gzip / zip file.

In these cases there are two solutions at hand: if you have console access you can login and import the plain SQL file (which you previously uploaded via FTP) by typing a command like “mysql -uusername -ppassword < dumpfile.sql” or if you only have access to phpMyAdmin you can open up a text editor and split the SQL file into smaller parts that can be uploaded sequentially. The problem si that if you have a larger dump file this can be a reeeaaaly time consuming job.

Today I encountered a problem like this. And since I had no console access and I was in no mood to lose a few precious hours splitting up a 40 meg file by hand I googled for “sql splitter” and I found a program called SQLDumpSplitter 2. Unfortunately the author’s site was not working (and since I don’t know any German I couldn’t really figure out why) but I found an alternative download on a dutch web developer forum. And since that forum required to be a member to be able to download I thought I should offer yet another alternative download location without all those registration related mini headaches. Here on this site…

SQLDumpSplitter 2

So here it is ladies and gentlemen: download SQLDumpSplitter 2 (or zip compressed). All credits for writing this program go to Philip Lehmann-Böhm (http://www.philiplb.de).

Slip sql files

 https://mastergt68.wordpress.com/2013/03/14/muy-buena-utilidad-para-hacer-split-de-archivos-sql/


Recientemente, tuve la necesidad de cargar un poco más de 187,000 archivos hacia SQL Server 2008 R2 SP2. Pues nada, abrir el archivo con extensión SQL desde el SQL Server Management Studio y listo. No señor; error.

Error SSMS

Bueno, habrá que hacer “split” o división en varios archivos. Yo tenía presente que en SSMS el editor de queries aguanta unas 10,000 entradas, así que procedí a ubicar un programa que me ayudase con la división y me encontré con GSplit.

Este es un programa gratuito que permite, con diversas condiciones, dividir un archivo grande en varios relacionados, que es justo lo que necesito.

Al abrir el programa, luego de descargarlo e instalarlo obviamente, se encuentra uno con esta pantalla:

GSplit 1

El programa es fácil de manejar y solo hay que indicar el archivo original, la carpeta destino y la manera en la cual las “piezas” se generarán. En mi caso en particular, definí dichas piezas de esta manera:

GSplit 2

Y en tipo y tamaño, especifiqué lo siguiente:

GSplit 3

Importante, revisar en “Other Properties” para dejarla así:

GSplit 4

Luego de esto, van al link “Split File!” y presionan Split!:

GSplit 5

Asegurense de incrementar el tamaño del buffer; en mi caso, lo dejé en 256 KB.

Luego de algunos segundos, aparece esta ventana indicando que el proceso fue exitoso:

GSplit 6

viernes, 12 de noviembre de 2021

nuget.psm1 porque la ejecución de scripts está deshabilitada en este sistema.

 'Abrimos el Windows PowerShell como administrador y ejecutamos:'


Get-ExecutionPolicy


'Nos tendría que devolver «restricted». (Restringido)'
'Para cambiar esta configuración basta con ejecutar:'


Set-ExecutionPolicy Unrestricted


https://www.codegrepper.com/code-examples/shell/Habilitar+la+ejecuci%C3%B3n+de+scripts+para+Powershell

jueves, 11 de noviembre de 2021

SQL SERVER procedure Buscar

 


CREATE procedure dbo.buscar

@Desc            VARCHAR(255)

,@Tipo            VARCHAR(2)


AS


BEGIN 


    IF UPPER(@Tipo) = 'T'

    BEGIN

        SELECT 

            NAME

        FROM  

            SYSOBJECTS 

        WHERE

            ID IN (SELECT 

                    ID 

                FROM 

                    SYSCOMMENTS 

                WHERE 

                    TEXT LIKE ('%' + @Desc + '%')

                )

        ORDER BY 

            NAME

    END

   

    IF UPPER(@Tipo) = 'C'

    BEGIN

        SELECT 

            NAME

        FROM  

            SYSOBJECTS 

        WHERE

            ID IN (SELECT 

                    ID 

                FROM 

                    SYSCOLUMNS 

                WHERE 

                    NAME LIKE ('%' + @Desc + '%')

                )

        ORDER BY 

            NAME

    END

   

   

    SELECT

        NAME

    FROM

        SysObjects 

WHERE

        xType = @Tipo

        AND

        name like ('%' + @Desc + '%')

    ORDER BY 

        NAME

END        



Saber que Jobs estan en ejecucion SQL SERVER

 



SELECT

j.name AS 'Nombre del Job',

ja.start_execution_date AS 'Inicio a las:',

Datediff(ss, ja.start_execution_date, Getdate()) AS 'Ha corrido por: (Segundos)'

FROM   msdb.dbo.sysjobactivity ja

INNER JOIN msdb.dbo.sysjobs J

ON j.job_id = ja.job_id

WHERE  job_history_id IS NULL

AND ja.start_execution_date IS NOT NULL

ORDER  BY start_execution_date

Convertir String a DateTime C#

 

string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date);           
Console.WriteLine("Year: {0}, Month: {1}, Day: {2}", dt.Year, dt.Month, dt.Day);

Ejemplo obtener programas instalados en pc cmd

WMIC  /output:C:\appsinstaladas.txt product get name,version

lunes, 1 de noviembre de 2021

How to convert DateTime to VarChar

DECLARE @now datetime
SET @now = GETDATE()
select convert(nvarchar(MAX), @now, 0) as output, 0 as style 
union select convert(nvarchar(MAX), @now, 1), 1
union select convert(nvarchar(MAX), @now, 2), 2
union select convert(nvarchar(MAX), @now, 3), 3
union select convert(nvarchar(MAX), @now, 4), 4
union select convert(nvarchar(MAX), @now, 5), 5
union select convert(nvarchar(MAX), @now, 6), 6
union select convert(nvarchar(MAX), @now, 7), 7
union select convert(nvarchar(MAX), @now, 8), 8
union select convert(nvarchar(MAX), @now, 9), 9
union select convert(nvarchar(MAX), @now, 10), 10
union select convert(nvarchar(MAX), @now, 11), 11
union select convert(nvarchar(MAX), @now, 12), 12
union select convert(nvarchar(MAX), @now, 13), 13
union select convert(nvarchar(MAX), @now, 14), 14
--15 to 19 not valid
union select convert(nvarchar(MAX), @now, 20), 20
union select convert(nvarchar(MAX), @now, 21), 21
union select convert(nvarchar(MAX), @now, 22), 22
union select convert(nvarchar(MAX), @now, 23), 23
union select convert(nvarchar(MAX), @now, 24), 24
union select convert(nvarchar(MAX), @now, 25), 25
--26 to 99 not valid
union select convert(nvarchar(MAX), @now, 100), 100
union select convert(nvarchar(MAX), @now, 101), 101
union select convert(nvarchar(MAX), @now, 102), 102
union select convert(nvarchar(MAX), @now, 103), 103
union select convert(nvarchar(MAX), @now, 104), 104
union select convert(nvarchar(MAX), @now, 105), 105
union select convert(nvarchar(MAX), @now, 106), 106
union select convert(nvarchar(MAX), @now, 107), 107
union select convert(nvarchar(MAX), @now, 108), 108
union select convert(nvarchar(MAX), @now, 109), 109
union select convert(nvarchar(MAX), @now, 110), 110
union select convert(nvarchar(MAX), @now, 111), 111
union select convert(nvarchar(MAX), @now, 112), 112
union select convert(nvarchar(MAX), @now, 113), 113
union select convert(nvarchar(MAX), @now, 114), 114
union select convert(nvarchar(MAX), @now, 120), 120
union select convert(nvarchar(MAX), @now, 121), 121
--122 to 125 not valid
union select convert(nvarchar(MAX), @now, 126), 126
union select convert(nvarchar(MAX), @now, 127), 127
--128, 129 not valid
union select convert(nvarchar(MAX), @now, 130), 130
union select convert(nvarchar(MAX), @now, 131), 131
--132 not valid
order BY style

 https://stackoverflow.com/questions/74385/how-to-convert-datetime-to-varchar

viernes, 22 de octubre de 2021

Install GitBucket

 

 1. Login to your VPS via SSH

ssh user@vps_IP

2. Update the system and install necessary packages

[user]$ sudo apt-get update && sudo apt-get -y upgrade
[user]$ sudo apt-get install software-properties-common git nano wget

3. Install Java 8

To add the webupd8team repository to your sources list and install the latest Oracle Java 8 JDK, run the following commands:

[user]$ sudo add-apt-repository ppa:webupd8team/java
[user]$ sudo apt-get update
[user]$ sudo apt-get install oracle-java8-installer

To check if JAVA has been properly installed on your Ubuntu 16.04 VPS run java -version, and the output should be similar to the following:

[user]$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

4. Install GitBucket

Create a new GitBucket user:

[user]$ sudo adduser --gecos 'Gitbucket User' gitbucket

GitBucket will store all the git repositories in the home directory of the user who will launch the application.

Download latest gitbucket.war from Github. At the time of writing, the latest version is version 4.4.

[user]$ sudo wget -O /home/gitbucket/gitbucket.war https://github.com/gitbucket/gitbucket/releases/download/4.4/gitbucket.war
[user]$ sudo chown -R gitbucket: /home/gitbucket

5. Create systemd service

To create a new systemd service for GitBucket, open your editor of choice and create a new file:

[user]$ sudo nano /etc/systemd/system/gitbucket.service

and add the following code lines:

[Unit]
Description=GitBucket service
After=syslog.target
After=network.target

[Service]
User=gitbucket
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port=8080 --host=127.0.0.1

[Install]
WantedBy=multi-user.target

Start the GitBucket server and set it to start automatically on boot:

[user]$ sudo systemctl enable gitbucket.service
[user]$ sudo systemctl start gitbucket.service

To verify the unit started, run systemctl status gitbucket.service and you should see something like below:

● gitbucket.service - GitBucket service
   Loaded: loaded (/etc/systemd/system/gitbucket.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-09-09 18:25:18 CDT; 2s ago
 Main PID: 3578 (java)
   CGroup: /system.slice/gitbucket.service
           └─3578 /usr/bin/java -jar /home/gitbucket/gitbucket.war --port=8080 --host=127.0.0.1

6. Install and configure Nginx

To install the latest stable version of Nginx available on the Ubuntu repositories, run:

[user]$ sudo apt-get -y install nginx

Generate a self signed ssl certificate:

[user]$ sudo mkdir -p /etc/nginx/ssl
[user]$ cd /etc/nginx/ssl
[user]$ sudo openssl genrsa -des3 -passout pass:x -out gitbucket.pass.key 2048
[user]$ sudo openssl rsa -passin pass:x -in gitbucket.pass.key -out gitbucket.key
[user]$ sudo rm gitbucket.pass.key
[user]$ sudo openssl req -new -key gitbucket.key -out gitbucket.csr
[user]$ sudo openssl x509 -req -days 365 -in gitbucket.csr -signkey gitbucket.key -out gitbucket.crt

[user]$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
If you don’t want to get warnings associated with self-signed SSL Certificates, you can purchase a trusted SSL certificate here.

Next, create a new Nginx server block:

[user]$ sudo nano /etc/nginx/sites-available/myGitbucket.com
server {
    listen 443 ssl http2;
    server_name myGitbucket.com;

    location / {
        proxy_pass              http://127.0.0.1:8080;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout   150;
        proxy_send_timeout      100;
        proxy_read_timeout      100;
        proxy_buffers           4 32k;
        client_max_body_size    500m; # Big number is we can post big commits.
        client_body_buffer_size 128k;
    }

    ssl on;
    ssl_certificate     /etc/nginx/ssl/gitbucket.crt;
    ssl_certificate_key /etc/nginx/ssl/gitbucket.key;
    ssl_dhparam  /etc/nginx/ssl/dhparam.pem;

    ssl_session_timeout 5m;
    ssl_ciphers  EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/mygitbucket.access.log;
    error_log   /var/log/nginx/mygitbucket.error.log;

}

server {
    listen      80;
    server_name myGitbucket.com;

    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;
}

Activate the server block by creating a symbolic link :

[user]$ sudo ln -s /etc/nginx/sites-available/myGitbucket.com /etc/nginx/sites-enabled/myGitbucket.com

Test the Nginx configuration and restart nginx:

[user]$ sudo nginx -t
[user]$ sudo systemctl start nginx

Open http://myGitbucket.com/ in your favorite web browser and you should see the GitBucket home page. The default username and password are both root.

https://www.rosehosting.com/blog/install-gitbucket-on-ubuntu-16-04/