<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6531894304062279712</atom:id><lastBuildDate>Tue, 19 Aug 2025 14:01:19 +0000</lastBuildDate><category>c#</category><category>news</category><category>app android</category><category>.net</category><category>android</category><category>tips and tricks</category><category>adobe</category><category>app Iphone</category><category>iOS</category><category>sql</category><category>visual basic</category><category>aspx</category><category>Xcode</category><category>microstock foto</category><category>cybersecurity</category><category>sicurezza</category><category>java</category><category>linux</category><category>mobile</category><category>mysql</category><category>asp</category><category>WebService</category><category>html</category><category>photo</category><category>php</category><category>python</category><category>blog</category><category>editor</category><category>excel</category><category>formcalc</category><category>log</category><category>sonarqube</category><category>bluetooth</category><category>copyright</category><category>jQuery</category><category>javascript</category><category>mobsf</category><category>seo</category><category>social network</category><category>vbscript</category><category>xml</category><title>MGB | Programming</title><description>Sorgenti, linguaggi, best practice, suggerimenti, sul mondo della programmazione e non solo</description><link>http://mg1975.blogspot.com/</link><managingEditor>noreply@blogger.com (Mauro Giordano)</managingEditor><generator>Blogger</generator><openSearch:totalResults>193</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-5516868931663303005</guid><pubDate>Tue, 21 Nov 2023 17:48:00 +0000</pubDate><atom:updated>2024-02-05T15:45:08.039+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips and tricks</category><title>Calcolo in python dei giorni lavorativi (lunedì venerdì) per anno 2023, escludendo le feste se capitano dal lunedì al venerdì.</title><description>Questo è un esempio di un calcolo in python dei giorni lavorativi (lunedì venerdì) per anno 2023, escludendo le feste se capitano dal lunedì al venerdì.
La Pasquetta e il S.Patrono sono variabili ma le altre sono fisse: 1 e 6 gennaio, 10 aprile pasquetta per il 2023, 25 aprile, 1 maggio, 2 giugno, 29 giugno (S.Patrono a Roma), 15 agosto, 1 novembre, 8 dicembre, 25 e 26 dicembre.
Il secondo script è parziale per la scrittura del mese e dei giorni.
Sostitutendo l&#39;anno si potranno avere altri risultati, ma ricordarsi di inserire il giorno di Pasquetta corretto.
Basta copiare gli script in un qualsiasi editor online per eseguire una verifica.

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-cs&quot; &gt;
#calcolo del numero di giorni lavorativi all&#39;anno, per esempio il 2023
from datetime import date, timedelta

def count_weekdays_excluding_holidays(year, holidays):
    start_date = date(year, 1, 1)
    end_date = date(year, 12, 31)
    total_weekdays = 0

    holidays_set = set(date(year, int(d.split(&#39;/&#39;)[1]), int(d.split(&#39;/&#39;)[0])) for d in holidays)

    current_date = start_date
    while current_date &lt;= end_date:
        if current_date.weekday() &lt; 5 and current_date not in holidays_set:
            total_weekdays += 1
        current_date += timedelta(days=1)

    return total_weekdays

# Festività 2023
holidays_2023 = [&quot;1/1&quot;, &quot;6/1&quot;, &quot;10/4&quot;, &quot;25/4&quot;, &quot;1/5&quot;, &quot;2/6&quot;, &quot;29/6&quot;,
&quot;15/8&quot;, &quot;1/11&quot;, &quot;8/12&quot;, &quot;25/12&quot;, &quot;26/12&quot;]

print(count_weekdays_excluding_holidays(2023, holidays_2023))

#-------------------------------------------------------------------------------------

#calcolo del numero di giorni lavorativi all&#39;anno per mese, in questo caso il 2023, con scrittura del mese e numero giorni
from datetime import date, timedelta
import calendar

def monthly_working_days(year, holidays):
    monthly_days = {}

    holidays_set = set(date(year, int(d.split(&#39;/&#39;)[1]), int(d.split(&#39;/&#39;)[0])) for d in holidays)

    for month in range(1, 13):
        total_days = 0
        for day in range(1, calendar.monthrange(year, month)[1] + 1):
            current_date = date(year, month, day)
            if current_date.weekday() &lt; 5 and current_date not in holidays_set:
                total_days += 1
        month_name = calendar.month_name[month]
        monthly_days[month_name] = total_days

    return monthly_days

# Festivi
holidays_2023 = [&quot;1/1&quot;, &quot;6/1&quot;, &quot;10/4&quot;, &quot;25/4&quot;, &quot;1/5&quot;, &quot;2/6&quot;, &quot;29/6&quot;, &quot;15/8&quot;, &quot;1/11&quot;, &quot;8/12&quot;, &quot;25/12&quot;, &quot;26/12&quot;]
monthly_working_days_2023 = monthly_working_days(2023, holidays_2023)
print(monthly_working_days_2023)

#Risultato: {&#39;January&#39;: 21, &#39;February&#39;: 20, &#39;March&#39;: 23, &#39;April&#39;: 18, &#39;May&#39;: 22, 
&#39;June&#39;: 20, &#39;July&#39;: 21, &#39;August&#39;: 22, &#39;September&#39;: 21, &#39;October&#39;: 22, &#39;November&#39;: 21, &#39;December&#39;: 18}

&lt;/code&gt;&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2023/11/calcolo-in-python-dei-giorni-lavorativi.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-9210062779032859160</guid><pubDate>Fri, 23 Sep 2022 08:00:00 +0000</pubDate><atom:updated>2024-02-05T15:02:25.350+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">html</category><title>Caricare una DropDownList con MVC C#</title><description>
Esempio di un caricamento di una DropDownList in MVC C# partendo dal relativo Controller (file.cs).&lt;br /&gt;
In questo caso carico la dropdownlist del pagesize, ossia quanti dati mosterò a video ad esempio su di una grid.&lt;br /&gt;
&lt;br /&gt;
Parte relativa al back-end&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot; style=&quot;overflow: auto;&quot;&gt;&lt;code class=&quot;language-cs&quot;&gt;
public ActionResult Index()
{
  LoadItem();
}

private void LoadItem()
{
	ViewData[&quot;offsetlist&quot;] = new List&lt;SelectListItem&gt; {
		new SelectListItem { Text = &quot;5&quot;, Value = &quot;5&quot; },
		new SelectListItem { Text = &quot;10&quot;, Value = &quot;10&quot; },
		new SelectListItem { Text = &quot;15&quot;, Value = &quot;15&quot; },
		new SelectListItem { Text = &quot;50&quot;, Value = &quot;50&quot; }
	};
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Nella View del file csthml inserire la seguente sintassi:
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-cs&quot;&gt;
@Html.DropDownList(&quot;pagesize&quot;,
(ViewData[&quot;offsetlist&quot;] as IEnumerable&lt;SelectListItem&gt;), &quot;Page Size&quot;
  , new { @class = &quot;form-control&quot;, onchange = &quot;this.form.submit()&quot; })
}
&lt;/code&gt;&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2022/09/caricare-una-dropdownlist-con-mvc-c.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-8450304289523257554</guid><pubDate>Mon, 19 Sep 2022 15:00:00 +0000</pubDate><atom:updated>2024-02-05T15:06:48.072+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Apertura o Download di un file pdf già creato con MVC C#</title><description>In questo esempio è possibile aprire e poi scaricare un file pdf da un sito creato con MVC c#.&lt;br /&gt;
Nella View inserire la seguente sintassi che permetterà il download del file.&lt;br /&gt;&lt;br /&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;
&amp;lt;a class=&amp;quot;text-default&amp;quot; href=&amp;quot;@Url.Action(&amp;quot;PdfGuide&amp;quot;, &amp;quot;Home&amp;quot;)&amp;quot; 
target=&amp;quot;_blank&amp;quot; title=&amp;quot;Download guide&amp;quot;&amp;gt; &amp;lt;i class=&amp;quot;dropdown-icon fe fe-help-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; &amp;lt;/a&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Parte relativa al back-end, inserire il file pdf sotto la root del progetto ~/assets/help (se non esiste la dir crearne una nuova)
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-cs&quot;&gt;
public FileResult PdfGuide()
{
	//include the .pdf extention at the end
	string path = Server.MapPath(String.Format(&quot;~/assets/help/guide.pdf&quot;));

	string mime = MimeMapping.GetMimeMapping(path);

	return File(path, mime);
}
&lt;/code&gt;&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2022/09/apertura-o-download-di-un-file-pdf-gia.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-5204170984909422273</guid><pubDate>Wed, 27 Jan 2021 10:24:00 +0000</pubDate><atom:updated>2021-01-27T11:24:02.777+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">html</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Portare un valore da un campo testo sulla barra degli indirizzi con html e javascript</title><description>L&#39;esempio seguente mostra come è possibile inviare un valore inerito in un campo testo nella barra degli indirizzi del browser con html e javascript.&lt;br&gt;
Questo metodo è utile se vogliamo ad esempio inviare il valore in un&#39;altra pagina html o php.

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;Language-js&quot;&gt;&amp;lt;html&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;form name=&amp;#39;frmPagin&amp;#39; action=&amp;#39;javascript:searchItem();&amp;#39; method=&amp;#39;post&amp;#39;&amp;gt;
&amp;lt;table border=&amp;quot;0&amp;quot; &amp;gt;
	&amp;lt;tr&amp;gt;
	&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt; 
		&amp;lt;input name=&amp;quot;inputsearch&amp;quot; id=&amp;quot;inputsearch&amp;quot; 
        type=&amp;quot;text&amp;quot;  maxlength=&amp;quot;80&amp;quot;  placeholder=&amp;quot;Search&amp;quot;&amp;gt;
	&amp;lt;/td&amp;gt;
	&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;
	&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt; 
		&amp;lt;input name=&amp;quot;btnsearch&amp;quot; id=&amp;quot;btnsearch&amp;quot; type=&amp;quot;submit&amp;quot; value&amp;quot;SEND&amp;quot;&amp;gt;
	&amp;lt;/td&amp;gt;
	&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;script&amp;gt;
function searchItem(){
	addOrUpdateUrlParam(&amp;#39;Search&amp;#39;,document.getElementById(&amp;quot;inputsearch&amp;quot;).value);	
}
function addOrUpdateUrlParam(name, value)
{
	var href = window.location.href;
	var regex = new RegExp(&amp;quot;[&amp;\\?]&amp;quot; + name + &amp;quot;=&amp;quot;);
	if(value==&amp;quot;&amp;quot;)
		value=&amp;quot;0&amp;quot;;
	if(regex.test(href))
	{
		regex = new RegExp(&amp;quot;([&amp;\\?])&amp;quot; + name + &amp;quot;=\\w+&amp;quot;);
		window.location.href = href.replace(regex, &amp;quot;$1&amp;quot; + name + &amp;quot;=&amp;quot; + value);
	}
	else
	{
	if(href.indexOf(&amp;quot;?&amp;quot;) &amp;gt; -1)
	  window.location.href = href + &amp;quot;&amp;&amp;quot; + name + &amp;quot;=&amp;quot; + value;
	else
	  window.location.href = href + &amp;quot;?&amp;quot; + name + &amp;quot;=&amp;quot; + value;
	}
}
&amp;lt;/script&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2021/01/portare-un-valore-da-un-campo-testo.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-5142052942784545917</guid><pubDate>Mon, 25 Jan 2021 14:00:00 +0000</pubDate><atom:updated>2021-01-25T15:00:01.787+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">app android</category><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">sicurezza</category><title>Alcuni comandi ADB per analisi statica su Android mobile</title><description>&lt;p&gt;Dopo aver scaricato e installato &lt;a href=&quot;https://developer.android.com/studio/command-line/adb&quot; target=&quot;_blank&quot;&gt;Android Debug Bridge (ADB)&lt;/a&gt; , uno dei programmi capace di dialogare con un dispositivo android tramite riga di comando, si può procedere con l&#39;invio di alcune istruzioni con il terminale da pc a device. Una volta connesso il device via usb al pc Windows oppure Linux questa è una lista di comandi utili per navigare all&#39;interno del device.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#connetto il pc con il device, dovrei ottenere il nome del device sul terminale&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb devices&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#connessione al device 192.168.xxx.yyy&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb connect 192.168.xxx.yyy:5555&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#per i devices che permettono di avere diritti root&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb root&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#si entra nella shell del device (limitazioni per device non root)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb shell&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#visualizzazione dei packages presenti nel device&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb shell pm list packages&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#ricerca del package test1.test2 all&#39;interno di tutti i packages del device&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb shell &#39;pm list packages -f&#39;&amp;nbsp; | grep &quot;test1.test2&quot;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#invio il log del device ad un file di testo su pc&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb logcat -d &amp;gt; logcat.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;i&gt;#installazione dell&#39; applicazione packagetest sul device&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb install packagetest.apk&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;i&gt;#termina tutti i collegamenti con i devices Android&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb kill-server&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;#se si è root si può ottenere la directory delle shared_prefs&lt;/i&gt;&lt;/p&gt;&lt;p&gt;adb pull /data/data/packagename/shared_prefs&lt;/p&gt;</description><link>http://mg1975.blogspot.com/2021/01/alcuni-comandi-adb-per-analisi-statica.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-6001257898396876507</guid><pubDate>Fri, 15 Jan 2021 08:30:00 +0000</pubDate><atom:updated>2021-01-15T09:30:11.644+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">sicurezza</category><category domain="http://www.blogger.com/atom/ns#">sonarqube</category><category domain="http://www.blogger.com/atom/ns#">tips and tricks</category><title>Avviare SonarScanner per un progetto .Net e ottenere l&#39;analisi su SonarQube</title><description>Eseguire Windows PowerShell come amministratore.&amp;nbsp;&lt;div&gt;Con il comando &quot;Get-ExecutionPolicy&quot; è possibile verificare lo stato attuale dei permessi per l’esecuzione degli script.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eventualmente per modificare i criteri di esecuzione, se non sono &quot;unrestricted&quot;, digitare:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&quot;Set-ExecutionPolicy unrestricted&quot;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Identificare sul pc i path di:&amp;nbsp;&lt;/div&gt;&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;&lt;div&gt;SonarScanner.MSBuild.exe&amp;nbsp;&lt;/div&gt;&lt;div&gt;SolutionName.sln del progetto che si vuole analizzare&amp;nbsp;&lt;/div&gt;&lt;div&gt;localhost:9000 ip e porta del server dove è presente SonarQube&amp;nbsp;&lt;/div&gt;&lt;div&gt;abcdfefg è il
parametro creato in SonarQube (lo si trova all&#39;interno di SonarQube dopo essersi
loggato con unsername e password di amministratore)&amp;nbsp;
&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Digitare poi i seguenti comandi, opportunamente modificati:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C:\...\SonarScanner.MSBuild.exe begin /k:&quot;SolutionName&quot; /d:sonar.host.url=http://localhost:9000  /d:sonar.login=abcdfefg
&amp;amp; &#39;C:\...\MSBuild.exe&#39; SolutionName.sln /t:Rebuild
C:\...\SonarScanner.MSBuild.exe end /d:sonar.login=abcdfefg&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Per maggiori info ecco la guida di riferimento:&amp;nbsp; &lt;a href=&quot;https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild/&quot; target=&quot;_blank&quot;&gt;https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild/&lt;/a&gt;&lt;/div&gt;</description><link>http://mg1975.blogspot.com/2021/01/avviare-sonarscanner-per-un-progetto.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-1337042532576901361</guid><pubDate>Wed, 13 Jan 2021 15:00:00 +0000</pubDate><atom:updated>2021-01-13T16:00:09.322+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">iOS</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">sicurezza</category><title>Un app per esercitarsi con i PT su iOS</title><description>Ci si può esercitare con i Penetration Test in ambiente legale su iOS utilizzando l&#39;app free e open source DVIA presente sul sito: &lt;a href=&quot;http://damnvulnerableiosapp.com&quot; target=&quot;_blank&quot;&gt;http://damnvulnerableiosapp.com&lt;/a&gt;
Si possono sfruttare le vulnerabilità comuni delle applciazioni iOS seguendo la TOP 10 dei mobile risks di &lt;a href=&quot;https://owasp.org/www-project-mobile-top-10/&quot; target=&quot;_blank&quot;&gt;OWASP&lt;/a&gt;.
E&#39; molto interessante perchè ci sono esercizi semplici e davvero fatti bene: basta installarla sul device o virtual device e seguire le indicazioni che appaiono sullo schermo.
L&#39;ho provata su iOS 14 ed è andato tutto bene.</description><link>http://mg1975.blogspot.com/2021/01/un-app-per-esercitarsi-con-i-pt-su-ios.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-8559006851028936015</guid><pubDate>Mon, 25 May 2020 06:30:00 +0000</pubDate><atom:updated>2020-05-26T15:44:02.061+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">app Iphone</category><category domain="http://www.blogger.com/atom/ns#">iOS</category><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">Xcode</category><title>Codice sorgente della mia app Countries per iOS</title><description>E&#39; ora disponibile il codice sorgente della mia app in singola o multipla licenza su sellmyapp.com; molto semplice da personalizzare con documentazione relativa all&#39;interno:&lt;br /&gt;
- Countries disponibile &lt;a href=&quot;https://www.sellmyapp.com/downloads/countries/?utm_source=devshared&amp;utm_medium=socialmedia&amp;utm_campaign=devshared&quot; target=&quot;_blank&quot;&gt;qui&lt;/a&gt;&lt;br /&gt;
- Countries video &lt;a href=&quot;https://youtu.be/M5mFtKoJfi0&quot; target=&quot;_blank&quot;&gt;qui&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Countries is an easy “Master Detail” App for iPhone developed with Xcode for iOS.&lt;br /&gt;
The project objective is to show how master-detail works for many purposes.&lt;br /&gt;
In this App there are 20 Countries with 7 informations for each one</description><link>http://mg1975.blogspot.com/2020/05/codice-sorgente-della-mia-app-countries.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-856568050081741228</guid><pubDate>Thu, 21 May 2020 16:30:00 +0000</pubDate><atom:updated>2020-05-21T18:30:03.585+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">app android</category><title>Sorgenti di FreeWord e CryptstoryEN ora in vendita</title><description>Nuovi codici sorgenti delle mie app in vendita pronti per essere modificati (singole e multi licenze):&lt;br /&gt;
&lt;br /&gt;
- FreeWord &lt;a href=&quot;https://www.sellmyapp.com/downloads/freeword/?utm_source=devshared&amp;utm_medium=socialmedia&amp;utm_campaign=devshared&quot;&gt;qui&lt;/a&gt;&lt;br /&gt;
- CryptstoryEN &lt;a href=&quot;https://www.sellmyapp.com/downloads/cryptstoryen/?utm_source=devshared&amp;utm_medium=socialmedia&amp;utm_campaign=devshared&quot;&gt;qui&lt;/a&gt;</description><link>http://mg1975.blogspot.com/2020/05/sorgenti-di-freeword-e-cryptstoryen-ora.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-7252615469678133013</guid><pubDate>Tue, 10 Mar 2020 15:07:00 +0000</pubDate><atom:updated>2020-03-10T16:07:34.821+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">app android</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">news</category><title>Cryptstory IT di nuovo online</title><description>Sistemata la mia app Android che era scomparsa dallo store di Google.&lt;br /&gt;
Eccola qua: &lt;a href=&quot;https://play.google.com/store/apps/details?id=it.mg.android.cryptstoryit&amp;hl=it&quot;&gt;CryptstoryIT&lt;/a&gt; dove bisogna decodificare l&#39;aforisma, la storia o frase famosa di autori celebri. Dal numero alla lettera: 100 storie con la versione italiana più 1 che si può inserire.&lt;br /&gt;
Buon divertimento con gli aneddoti!&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUh7XO7zMkKdB8q_FwPb3MQr3MY6vyI5GKZfGIiBrOC8FBN-4n0oA-UZiK-MOjTSqFNRuwziRuzR9GTiCbgxajosIFd8UX2FrCaJlryLx1WEWfB5AaVrFV74S7zYcJDCH0c3dN7DAeAB3K/s1600/Screenshot_1583516772.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUh7XO7zMkKdB8q_FwPb3MQr3MY6vyI5GKZfGIiBrOC8FBN-4n0oA-UZiK-MOjTSqFNRuwziRuzR9GTiCbgxajosIFd8UX2FrCaJlryLx1WEWfB5AaVrFV74S7zYcJDCH0c3dN7DAeAB3K/s320/Screenshot_1583516772.png&quot; width=&quot;180&quot; height=&quot;320&quot; data-original-width=&quot;900&quot; data-original-height=&quot;1600&quot; /&gt;&lt;/a&gt;</description><link>http://mg1975.blogspot.com/2020/03/cryptstory-it-di-nuovo-online.html</link><author>noreply@blogger.com (Mauro Giordano)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUh7XO7zMkKdB8q_FwPb3MQr3MY6vyI5GKZfGIiBrOC8FBN-4n0oA-UZiK-MOjTSqFNRuwziRuzR9GTiCbgxajosIFd8UX2FrCaJlryLx1WEWfB5AaVrFV74S7zYcJDCH0c3dN7DAeAB3K/s72-c/Screenshot_1583516772.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-6480914147455863023</guid><pubDate>Thu, 05 Mar 2020 05:00:00 +0000</pubDate><atom:updated>2020-03-05T06:00:13.189+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">app android</category><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">sicurezza</category><category domain="http://www.blogger.com/atom/ns#">tips and tricks</category><title>Come scaricare sul proprio pc il package di una app installata su di un device Android</title><description>In questo esempio viene mostrato come scaricare sul proprio pc (Window oppure Linux) un app presente sul terminale Android.&lt;br /&gt;
Certamente il codice non sarà chiaro e a volte sarà offuscato, ma in alcuni casi è utile per controllare cosa abbiano inserito all&#39;interno di una app.&lt;br /&gt;
L&#39;esempio è comprensibile ad un utente tecnico e bisognerà dare dei privilegi in più al device (non di root, ma rendere disponibili alcuni tool da sviluppatore).&lt;br /&gt;
Installare sul device Android l&#39;applicazione tramite store.&lt;br /&gt;
Andare sul device, trovare &quot;opzioni-sviluppatore&quot; e cliccare 7 volte su &quot;build number&quot; poi settare/cliccare il flag &quot;deug mode&quot;.&lt;br /&gt;
Collegare il device Android al pc tramite cavetto usb.&lt;br /&gt;
Scaricare e installare Android Platform Tools (ADB), oppure se già si ha Android Studio trovare il path tramite android studio e con il terminale posizionarsi su questo path.&lt;br /&gt;
Digitare i seguenti comandi:&lt;br /&gt;
adb devices  # si connette al device in automatico, deve riportare il device nella lista&lt;br /&gt;
#se non è connesso allora:&lt;br /&gt;
 adb connect 192.168.x.x&lt;br /&gt;
 adb root&lt;br /&gt;
 adb connect 192.168.x.x #per verifica&lt;br /&gt;
adb shell pm list packages #mostra tutti i pacchetti installati&lt;br /&gt;
adb shell pm path com.xxxx.xxxx  #mostra il percorso dell&#39;app richiesta&lt;br /&gt;
adb pull /data/app/com.xxxx.xxxx c:\temp  #lo copia sul proprio pc&lt;br /&gt;
Ed ecco che su &quot;c:\temp&quot; si avrà l&#39;intero codice.</description><link>http://mg1975.blogspot.com/2020/03/come-scaricare-sul-proprio-pc-il.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-3770595171439149030</guid><pubDate>Fri, 28 Feb 2020 05:30:00 +0000</pubDate><atom:updated>2020-02-28T06:30:05.956+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">sicurezza</category><category domain="http://www.blogger.com/atom/ns#">sonarqube</category><title>Esempio di installazione SonarQube 8.x</title><description>Questo è un esempio di sequenza di installazione che ho provato per &lt;a href=&quot;https://www.sonarqube.org/&quot;&gt;SonarQube &lt;/a&gt;su di una macchina virtuale, anche se è tutto descritto nella guida sul sito https://docs.sonarqube.org/latest/&lt;br /&gt;
&lt;br /&gt;
Requisiti:&lt;br /&gt;
pc linux 64bit&lt;br /&gt;
JDK v.11&lt;br /&gt;
Node.js 9.2.0&lt;br /&gt;
MS Sqlserver 2016 (express free facilmente scaricabile dal sito Microsoft)&lt;br /&gt;
&lt;br /&gt;
Per le finestre dos ho utilizzato sempre la modalità di amministratore.&lt;br /&gt;
&lt;br /&gt;
Controllare se già si ha la jdk v11 che sia presente la variabile d&#39;ambiente ad esempio: &lt;b&gt;JAVA_HOME=C:\Program Files\Java\jdk-11.0.5&lt;/b&gt;&lt;br /&gt;
Controllare anche la variabile PATH aggiornata con &lt;b&gt;&quot;%JAVA_HOME%\bin&quot;&lt;/b&gt;&lt;br /&gt;
Scaricare e installare Node.js 9.2.0&lt;br /&gt;
Scaricare e installare MS Sqlserver 2016 con il Management Studio&lt;br /&gt;
Creare un database &quot;sonar&quot;&lt;br /&gt;
Creare un utente owner del db come ad esempio &quot;sonarqube&quot; e psw &quot;sonarqube&quot;&lt;br /&gt;
Eseguire MMC SqlServer Manager Console e selezionare &quot;gestione configurazione sqlserver 2016&quot;&lt;br /&gt;
Attivare TCP/IP inserendo anche una porta statica libera come 1434 su IPALL e porta dinamica vuota&lt;br /&gt;
&lt;br /&gt;
Riavviare il servizio e attivare se disattivato il servizio web browser di SqlServer&lt;br /&gt;
Scaricare SonarQube 8.x e copiarlo su di una directory&lt;br /&gt;
&lt;br /&gt;
Modificare il file &quot;sonar.properties&quot; sotto &quot;c:\sonarqube8\conf&quot;&lt;br /&gt;
&lt;br /&gt;
sonar.jdbc.url=jdbc:sqlserver://localhost:1434;databaseName=sonar&lt;br /&gt;
sonar.jdbc.username=sonarqube&lt;br /&gt;
sonar.jdbc.password=sonarqube&lt;br /&gt;
sonar.web.javaOpts=-server -Xmx768m&lt;br /&gt;
sonar.web.port=9000&lt;br /&gt;
sonar.search.port=9004&lt;br /&gt;
&lt;br /&gt;
Prima di avviare SonarQube controllare che il file «&lt;install_dir&gt;/bin/Windows[ver]/lib/wrapper.dll» non sia bloccato a causa del download  &lt;br /&gt;
(tasto destro su file-&gt; proprietà -&gt; Annulla blocco se presente)&lt;br /&gt;
Far partire solamente la prima volta il StartSonar.bat (sotto \bin scegliere il s.o.)&lt;br /&gt;
Verificare il funzionamento collegandosi con &lt;b&gt;http://localhost:9000&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In caso di problemi sul numero della porta 9000, utilizzare per la web port la 9040 e per la search port la 9004 &lt;br /&gt;
&lt;br /&gt;
Eseguire il login con l’utenza «admin» «admin»</description><link>http://mg1975.blogspot.com/2020/02/esempio-di-installazione-sonarqube-8x.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-3618252517084604562</guid><pubDate>Thu, 20 Feb 2020 05:30:00 +0000</pubDate><atom:updated>2020-02-20T06:30:10.846+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">mobsf</category><title>MobSF sequenza di installazione</title><description>Dopo vari tentativi leggendo la &lt;a href=&quot;https://github.com/MobSF/Mobile-Security-Framework-MobSF/wiki/1.-Documentation&quot;&gt;guida qui&lt;/a&gt; questa è la sequenza corretta per l&#39;installazione di MobSF su di un Ubuntu o Kali-Linux (attenzione che ad oggi va bene solamente Python 3.6 - 3.7 come da &lt;a href=&quot;https://github.com/MobSF/Mobile-Security-Framework-MobSF&quot;&gt;guida qui&lt;/a&gt;).&lt;br /&gt;
Dopo aver scaricato &lt;a href=&quot;https://github.com/MobSF/Mobile-Security-Framework-MobSF&quot;&gt;da qui&lt;/a&gt; su di un folder a piacere.&lt;br /&gt;
Tutto da terminale:&lt;br /&gt;
sudo apt-get install git&lt;br /&gt;
sudo apt update &lt;br /&gt;
sudo apt-get install python3.6&lt;br /&gt;
sudo apt-get install python3-pip&lt;br /&gt;
&lt;i&gt;#eventuale jdk se non installata che normalmente si ha la 11:&lt;/i&gt;&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
sudo apt install python3-venv python3-pip python3-dev build-essential libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev wkhtmltopdf&lt;br /&gt;
&lt;i&gt;#io ho installato solamente:&lt;/i&gt; sudo apt install python3-venv build-essential libssl-dev libxml2-dev libxslt1-dev zlib1g-dev wkhtmltopdf&lt;br /&gt;
sudo apt-get install lib32stdc++6&lt;br /&gt;
sudo apt-get install android-tools-adb&lt;br /&gt;
git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git&lt;br /&gt;
&lt;i&gt;#si va sulla directory con:&lt;/i&gt;&lt;br /&gt;
cd Mobile-Security-Framework-MobSF&lt;br /&gt;
&lt;i&gt;#si installa con:&lt;/i&gt;&lt;br /&gt;
./setup.sh &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;#se si è sulla macchina virtuale allora aggiungere l&#39;utente con:&lt;/i&gt;&lt;br /&gt;
sudo adduser $USER vboxsf&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;#se si hanno problemi con la versione python 3.6 che non si riesce ad installare allora utilizzare conda:&lt;/i&gt;&lt;br /&gt;
Qui la guida: https://docs.conda.io/en/latest/miniconda.html&lt;br /&gt;
bash Miniconda3-latest-Linux-x86_64.sh&lt;br /&gt;
chiudere e riaprire il terminale&lt;br /&gt;
&lt;i&gt;#per testare se funziona&lt;/i&gt;&lt;br /&gt;
conda list &lt;br /&gt;
&lt;i&gt;#digitare:&lt;/i&gt;&lt;br /&gt;
conda install python=3.6.9&lt;br /&gt;
&lt;i&gt;#adesso tutti e due python devono avere 3.6.9&lt;/i&gt;&lt;br /&gt;
riavviare la macchina&lt;br /&gt;
python --version&lt;br /&gt;
python3 --version&lt;br /&gt;
&lt;i&gt;#da terminale sulla directory di MobSF e farlo partire:&lt;/i&gt;&lt;br /&gt;
./run.sh &lt;br /&gt;
navigare su http://localhost:8000/&lt;br /&gt;
&lt;i&gt;#per lo stop&lt;/i&gt;&lt;br /&gt;
ctrl+c</description><link>http://mg1975.blogspot.com/2020/02/mobsf-sequenza-di-installazione.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-3335881885956801019</guid><pubDate>Wed, 19 Feb 2020 05:30:00 +0000</pubDate><atom:updated>2020-02-19T06:30:05.838+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">app android</category><category domain="http://www.blogger.com/atom/ns#">app Iphone</category><category domain="http://www.blogger.com/atom/ns#">cybersecurity</category><category domain="http://www.blogger.com/atom/ns#">iOS</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">sicurezza</category><title>CyberSecurity alternative free per l&#39;analisi del software</title><description>Scrivere software sicuro non è cosa solamente cosa buona e giusta, ma anche saggia.&lt;br /&gt;
Le best practices di &lt;a href=&quot;https://owasp.org/&quot;&gt;OWASP &lt;/a&gt; e la lista &lt;a href=&quot;https://cwe.mitre.org/index.html&quot;&gt;CWE &lt;/a&gt; sono le benvenute.&lt;br /&gt;
Valide alternative free sperimentate sul campo sono state &lt;a href=&quot;https://www.sonarqube.org/&quot;&gt;SonarQube &lt;/a&gt;più che altro per le web application che permette di agganciare molti progetti o solutions sviluppati nei diversi linguaggi di programmazione.&lt;br /&gt;
Per il Mobile l&#39;alternativa free &lt;a href=&quot;https://github.com/MobSF/Mobile-Security-Framework-MobSF&quot;&gt;MobSF&lt;/a&gt; non è stata male sia per app Android che app iOS (Swift e Objective C). MobSF permette l&#39;analisi statica (prorio sul codice classi metodi) e dinamica (navigazione con le funzionalità).&lt;br /&gt;
Altro tool per controllare ciò che passa tra le app e il web è &lt;a href=&quot;https://owasp.org/www-project-zap/&quot;&gt;OWASP Zed Attack Proxy&lt;/a&gt;&lt;br /&gt;
</description><link>http://mg1975.blogspot.com/2020/02/cybersecurity-alternative-free-per.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-6444957507266626062</guid><pubDate>Fri, 18 Oct 2019 08:50:00 +0000</pubDate><atom:updated>2019-10-18T10:50:10.144+02:00</atom:updated><title></title><description>Le mie app in vendita sul nuovo portale &lt;a href=&quot;http://www.sellmyapp.com/author/mg1975&quot;&gt;sellmyapp.com&lt;/a&gt;&lt;br /&gt;
Si puo&#39; trovare il sorgente delle applicazioni e la relativa documentazione per aggiornarle.&lt;br&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.sellmyapp.com/downloads/quiz/?utm_source=devshared&amp;utm_medium=socialmedia&amp;utm_campaign=devshared&quot;&gt;Android Quiz&lt;/a&gt;&lt;br&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.sellmyapp.com/downloads/quiz-2/?utm_source=devshared&amp;utm_medium=socialmedia&amp;utm_campaign=devshared&quot;&gt;iOS Quiz&lt;/a&gt;&lt;br&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.sellmyapp.com/downloads/my-bookstore/?utm_source=devshared&amp;utm_medium=socialmedia&amp;utm_campaign=devshared&quot;&gt;Android MyBookstore&lt;/a&gt;</description><link>http://mg1975.blogspot.com/2019/10/le-mie-app-in-vendita-sul-nuovo-portale.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-5941686042756704127</guid><pubDate>Wed, 12 Sep 2018 13:56:00 +0000</pubDate><atom:updated>2021-01-19T17:55:57.761+01:00</atom:updated><title>Il codice delle mie app in vendita su chupamobile.com</title><description>Ecco il sito &lt;a href=&quot;https://author.chupamobile.com/author/mg1975&quot;&gt;chupamobile.com&lt;/a&gt; dove si può acquistare il codice delle mie app o giochi.&lt;br /&gt;
Quiz per Android e Countries per Iphone sono due esempi: &lt;br /&gt;
&lt;a href=&quot;https://author.chupamobile.com/android-trivia-and-quiz/quiz-10981&quot;&gt;Quiz per Android&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOLIhOM2gKUIah3cOI0TRHI5YvlkGbB7Ve9CA8_6bvBdkE6vckenImUP2dL5b53FToLbpC9HzL9RTCsaGJVwPY6INN2zFB9BGQWiwl3eM5EdfeaST6k0hoRjD3qOUEM8ESq7RbCu71WuBf/s1600/a1.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOLIhOM2gKUIah3cOI0TRHI5YvlkGbB7Ve9CA8_6bvBdkE6vckenImUP2dL5b53FToLbpC9HzL9RTCsaGJVwPY6INN2zFB9BGQWiwl3eM5EdfeaST6k0hoRjD3qOUEM8ESq7RbCu71WuBf/s200/a1.png&quot; width=&quot;200&quot; height=&quot;140&quot; data-original-width=&quot;200&quot; data-original-height=&quot;140&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQF0S8dILQyiJC0x4T41Nc6pFEJgSTue07wCO-l3BtxrOru3huMBWOL6D1msyEdnWgo5AUQTo82wOBHIl8LeWcO3geXvjjpZH3Si6pW2y5agG1gL8oDzZ-CReB4inp6uEWWXs_14GHVLZy/s1600/a2.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQF0S8dILQyiJC0x4T41Nc6pFEJgSTue07wCO-l3BtxrOru3huMBWOL6D1msyEdnWgo5AUQTo82wOBHIl8LeWcO3geXvjjpZH3Si6pW2y5agG1gL8oDzZ-CReB4inp6uEWWXs_14GHVLZy/s200/a2.png&quot; width=&quot;200&quot; height=&quot;89&quot; data-original-width=&quot;650&quot; data-original-height=&quot;290&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
Ora su &lt;a href=&quot;https://www.sellmyapp.com/author/mg1975/&quot; target=&quot;_blank&quot;&gt;sellmyapp.com&lt;/a&gt;  </description><link>http://mg1975.blogspot.com/2018/09/il-codice-delle-mie-app-in-vendita-su.html</link><author>noreply@blogger.com (Mauro Giordano)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOLIhOM2gKUIah3cOI0TRHI5YvlkGbB7Ve9CA8_6bvBdkE6vckenImUP2dL5b53FToLbpC9HzL9RTCsaGJVwPY6INN2zFB9BGQWiwl3eM5EdfeaST6k0hoRjD3qOUEM8ESq7RbCu71WuBf/s72-c/a1.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-7840953201218710733</guid><pubDate>Mon, 09 Jul 2018 08:00:00 +0000</pubDate><atom:updated>2021-01-26T11:31:20.442+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">aspx</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Invio email tramite l&#39;oggetto MailMessage in c#</title><description>In questo esempio si può inviare un&#39;email tramite librerie che mette a disposizione il framework .Net utilizzando il linguaggio c#.&lt;br /&gt;
Si può utilizzare questo metodo passando come argomenti il mittente, l&#39;oggetto dell&#39;email, il corpo del messaggio, una stringa di una serie di destinatari separati da una virgola e infine il parametro smtp del server:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-cs&quot;&gt;public static void SendMailMessage(string mailSender, string obj, string msg,
string recipients, string smtpserver)
{
 try { 
  MailMessage mailMessage = new MailMessage();
  MailAddress sender = new MailAddress(mailSender);
  foreach (string email in recipients.Split(&quot;,&quot;.ToCharArray()))
  {
   mailMessage.To.Add(email);
  }
  mailMessage.From = sender;
  mailMessage.Subject = obj;
  mailMessage.Body = msg; 
  SmtpClient server = new SmtpClient(smtpserver);   
  server.Send(mailMessage);     
  mailMessage.Dispose();
  server = null;
 }
 catch (Exception e)
 {
  //some code here
 }
}&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2018/07/invio-email-tramite-loggetto.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-4241591122418252298</guid><pubDate>Mon, 02 Jul 2018 06:00:00 +0000</pubDate><atom:updated>2025-03-07T14:22:14.043+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">aspx</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Comprimere file in formato zip con c#</title><description>Un modo per comprimere dei file in formato zip con linguaggio c#, è quello di di utilizzare la libreria DotNetZip&lt;br /&gt;
disponibile su &lt;a href=&quot;https://github.com/DinoChiesa/DotNetZip&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;DotNetZip&lt;/a&gt; &lt;br /&gt;
Componente abbastanza valido perchè sono riuscito a comprimere un file uguale o inferiore a 2.5 Gb utilizzando DotNetZip, una libreria gratuita.&lt;br /&gt;
Per utilizzare questo esempio bisognerà scaricare la libreria e importarla nella solution di Visual Studio come una classica dll (tasto dx e add reference).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint notranslate&quot;&gt; 
try
{
 using (ZipFile zip = new ZipFile())
  {
   zip.ParallelDeflateThreshold = -1; 
   zip.AddFile(&quot;c:\test1.doc&quot;, &quot;&quot;); //example file
   zip.AddFile(&quot;c:\test2.txt&quot;, &quot;&quot;); //example file
   //....other files
   zip.Save(&quot;c:\dirzip\test_zip.zip&quot;); //example dir and file
  }
 }
catch (ZipException e)
{
 //some code here
}
&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2018/07/comprimere-file-in-formato-zip-con-c.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-1759961256338361187</guid><pubDate>Mon, 25 Jun 2018 14:00:00 +0000</pubDate><atom:updated>2021-01-26T11:32:24.908+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">aspx</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Lettura riga per riga di un file di testo in c#</title><description>Un altro modo per leggere un file di testo in c# è creare un oggetto StreamReader e analizzare ogni riga in un ciclo while come fatto in questo esempio:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-cs&quot;&gt;StreamReader reader = new StreamReader(File.OpenRead(&quot;c:\test.txt&quot;));
try
{
 while (!reader.EndOfStream)
 {
  var line = reader.ReadLine();  
 }
}
catch (Exception ex)
{
 //code here
}
finally
{
 reader.Close();
}
&lt;/code&gt;&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2018/06/lettura-riga-per-riga-di-un-file-di.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-8751132103021826611</guid><pubDate>Sat, 19 May 2018 04:00:00 +0000</pubDate><atom:updated>2024-02-05T15:08:47.876+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">sql</category><title>Accesso al database Oracle tramite c#</title><description>Piccolo esempio che illustra un accesso al database Oracle tramite statement e una restituzione del numero di record presenti sulla tabella Authors in c#.&lt;br /&gt;
E&#39; stato utilizzata la libreria OracleClient da referenziare nel progetto .Net in Visual Studio&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint notranslate&quot;&gt;//using System.Data.OracleClient;

private static void testConnectionDB()
{
OracleConnection conn = new OracleConnection(oraConn);
int intRecord = 0;
string str1=&quot;Florence&quot;;
string str2=&quot;Italy&quot;;
try
{
 conn.Open();
 OracleCommand cmd = conn.CreateCommand();

 cmd.CommandType = CommandType.Text;
 cmd.CommandText = &quot;select count(*) as numAuthors from Authors where field1 =:strField1 and field2 =:strField2&quot;;

 cmd.Parameters.AddWithValue(&quot;strField1&quot;, str1);
 cmd.Parameters.AddWithValue(&quot;strField2&quot;, str2);

 intRecord = Convert.ToInt32(cmd.ExecuteScalar()); 
  
}
catch (Exception ex)
{
 log.Error(ex.Message);
}
finally
{
   cmd.Dispose();

   if (conn.State != ConnectionState.Closed)
   {
    conn.Close();
   }
}
&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2018/05/accesso-al-database-oracle-tramite-c.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-3425047961399862686</guid><pubDate>Thu, 17 May 2018 12:00:00 +0000</pubDate><atom:updated>2018-05-17T14:00:06.374+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">microstock foto</category><category domain="http://www.blogger.com/atom/ns#">news</category><title>Aggiornamento foto su dreamstime.com</title><description>Nuovo aggiornamento del mio portfolio su &lt;a href=&quot;https://www.dreamstime.com/Mg1975_portfolio_pg1#res4448197&quot; target=&quot;_blank&quot;&gt;dreamstime.com&lt;/a&gt;. &lt;br /&gt;
Ecco alcuni esempi:&lt;br /&gt;
&lt;a href=&quot;https://thumbs.dreamstime.com/b/flower-detail-garden-beautiful-colors-green-natural-s-color-spring-116756766.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://thumbs.dreamstime.com/b/flower-detail-garden-beautiful-colors-green-natural-s-color-spring-116756766.jpg&quot; width=&quot;320&quot; height=&quot;213&quot; data-original-width=&quot;800&quot; data-original-height=&quot;533&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://thumbs.dreamstime.com/z/duck-lawn-photo-foreground-near-lake-116758225.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://thumbs.dreamstime.com/z/duck-lawn-photo-foreground-near-lake-116758225.jpg&quot; width=&quot;320&quot; height=&quot;236&quot; data-original-width=&quot;800&quot; data-original-height=&quot;589&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://thumbs.dreamstime.com/z/waterfall-town-water-splashes-ground-near-buildings-116757516.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://thumbs.dreamstime.com/z/waterfall-town-water-splashes-ground-near-buildings-116757516.jpg&quot; width=&quot;320&quot; height=&quot;236&quot; data-original-width=&quot;800&quot; data-original-height=&quot;589&quot; /&gt;&lt;/a&gt;</description><link>http://mg1975.blogspot.com/2018/05/aggiornamento-foto-su-dreamstimecom.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-2179678260140230186</guid><pubDate>Wed, 14 Mar 2018 14:00:00 +0000</pubDate><atom:updated>2021-01-26T11:33:18.656+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">php</category><title>Resize image e rotate image in php prima di eseguire un update su MySql</title><description>Immaginiamo un form in php con un&#39;immagine da uploadare su db Mysql e la vogliamo ridimensionare e ruotare prima di inserirla o aggiornarla.&lt;br /&gt;
Ecco un esempio di codice php per aggiornare una tabella in un database con un&#39;immagine ridimensionata e ruotata a 90 gradi:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;Language-php&quot;&gt;$pdo = Database::connect();
$idArticle=$_POST[&quot;idart&quot;];

$query = &quot;SELECT Image FROM Table WHERE Id=?&quot;; 
try{
 $pdo_statement = $pdo-&gt;prepare($query);
 $pdo_statement-&gt;bindParam(1,$idArticle );
 $pdo_statement-&gt;execute();
 
 $num = $pdo_statement-&gt;rowCount();

 if ($num) {
  $row = $pdo_statement-&gt;fetch(PDO::FETCH_ASSOC);
  if($row[&#39;Image&#39;]!=null){
   $image = imagecreatefromstring($row[&#39;Image&#39;]);
   $w = imagesx($image);
   $h = imagesy($image);
   
   //resize image
   $ratio=0.5;
   $larg = $w/$ratio;
   $alt = $h/$ratio;
   $image = imagescale($image, $larg, $alt);
   
   ob_start();
   
   //rotate image
   $transp = imagecolorallocatealpha($image,0,0,0,127 );
   $image  = imagerotate($image, 90, $transp, 1);
   
   imagejpeg($image);

   $contents = ob_get_contents();
   ob_end_clean();

   imagedestroy($image);

   $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
   $sql = &quot;UPDATE Table set Image=? WHERE Id=?&quot;;
   $pdo = $pdo-&gt;prepare($sql);
   $pdo-&gt;bindParam(1, $contents, PDO::PARAM_LOB);
   $pdo-&gt;bindParam(2, $idArticle);

   $pdo-&gt;execute();
   
   echo &quot; img src=&#39;data:image/jpeg;base64,&quot;.base64_encode($contents).&quot;&#39; / &quot;;
  }
 }else{
  return null;
 }
}catch(PDOException $e) 
{
 echo $e-&gt;getMessage();
}

Database::disconnect();
&lt;/code&gt;&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2018/03/resize-image-e-rotate-image-in-php.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-6571124332078343803</guid><pubDate>Fri, 09 Mar 2018 10:00:00 +0000</pubDate><atom:updated>2024-02-05T15:09:19.672+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">WebService</category><title>Chiamare un web service in modalità asincrona e sincrona in c#</title><description>Il seguente esempio è una chiamata ad un metodo di un web service in c# con  una risposta in modalità sincrona o asincrona.&lt;br&gt;&lt;br /&gt;
Decommentando la parte di wait response si potrà attendere l&#39;esito, altrimenti verrà restituito un risultato mentre l&#39;elaborazione sarà in corso.&lt;br /&gt;
&lt;pre class=&quot;prettyprint notranslate&quot;&gt;public class ServiceExample : System.Web.Services.WebService
    {
 private delegate string AsyncMethodCallerCreateZip(string idArticle, out string outResult);
  
 [WebMethod(Description = &quot;An example&quot;)]
 public string FirstElaboration(string idArticle)
 {
  try
  {
   //Async call
   AsyncMethodCallerCreateZip caller = new AsyncMethodCallerCreateZip(CreateZip);
   IAsyncResult result = caller.BeginInvoke(idArticle, out outResult, null, null);

   //wait response
   //result.AsyncWaitHandle.WaitOne();
   //string returnValue = caller.EndInvoke(out outResult, result);
   //result.AsyncWaitHandle.Close();
   //return returnValue;

   return &quot;OK&quot;;
  }
  catch (Exception ex)
  {
   return &quot;KO&quot;;
  }
 }

 public string CreateZip(string idArticle, out string outResp)
 {
  //code here
  return outResp;
 }
}
&lt;/pre&gt;</description><link>http://mg1975.blogspot.com/2018/03/chiamare-un-web-service-in-modalita.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-8591428719645565359</guid><pubDate>Thu, 01 Feb 2018 09:56:00 +0000</pubDate><atom:updated>2018-05-17T11:55:16.823+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">microstock foto</category><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">photo</category><title>Aggiornamento portfolio su dreamstime.com</title><description>Nuovo maxi aggiornamento del mio portfolio su &lt;a href=&quot;https://www.dreamstime.com/Mg1975_portfolio_pg1#res4448197&quot; target=&quot;_blank&quot;&gt;dreamstime.com&lt;/a&gt;. Molte foto sono state accettate e catalogate in &quot;Nature&quot;, &quot;Landscape&quot; e &quot;Ruins&quot;.&lt;br /&gt;
</description><link>http://mg1975.blogspot.com/2018/02/aggiornamento-portfolio-su-dreamstimecom.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6531894304062279712.post-4824022727408658035</guid><pubDate>Mon, 25 Jul 2016 21:00:00 +0000</pubDate><atom:updated>2021-01-19T17:52:17.288+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">iOS</category><category domain="http://www.blogger.com/atom/ns#">news</category><title>Android and iOS source code on sellmyapp.com</title><description>Oltre 4000 visite per le mie app in vendita su www.sellmyapp.com&lt;br /&gt;
Ecco il portfolio da dove poter scaricare il codice sorgente relativo a ciascuna applicazione sia su Android che iOS: &lt;a href=&quot;https://www.sellmyapp.com/author/mg1975/&quot; target=&quot;_blank&quot;&gt;https://www.sellmyapp.com/author/mg1975/&lt;/a&gt;</description><link>http://mg1975.blogspot.com/2016/07/android-and-ios-source-code-on.html</link><author>noreply@blogger.com (Mauro Giordano)</author></item></channel></rss>