<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debug &#8211; Kodono</title>
	<atom:link href="https://blog.kodono.info/wordpress/tag/debug/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.kodono.info/wordpress</link>
	<description>Pour tous les technophiles</description>
	<lastBuildDate>Mon, 09 Sep 2024 12:56:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>How to run Android TV 9 on Windows</title>
		<link>https://blog.kodono.info/wordpress/2024/09/02/how-to-run-android-tv-9-on-windows/</link>
					<comments>https://blog.kodono.info/wordpress/2024/09/02/how-to-run-android-tv-9-on-windows/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Mon, 02 Sep 2024 09:34:00 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=2311</guid>

					<description><![CDATA[I used to use Android Studio with the various emulators to test my Android apps, however for Android TV 9 it doesn&#8217;t work properly because it doesn&#8217;t have Google Play Store on it. To have a good version of Android TV 9: Downlad a VirtualBox image of it – I used the one shared in [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I used to use Android Studio with the various emulators to test my Android apps, however for Android TV 9 it doesn&#8217;t work properly because it doesn&#8217;t have Google Play Store on it.</p>
<p>To have a good version of Android TV 9:</p>
<ol>
<li><a href="https://mega.nz/file/XQ9zWaoC#PajlBLEU-43g239wAB0vpMsnpYpEU6seSqz36lXv5go">Downlad a VirtualBox image of it</a> – I used the one shared <a href="https://www.youtube.com/watch?v=_dfOESBBTHM">in this video</a>
<li>Install <a href="https://www.virtualbox.org/">VirtualBox</a> if you don&#8217;t have it yet</li>
<li>Load the downloaded image with VirtualBox</li>
<li>Configure it by going to the network section and select &#8220;Bridged Adapter&#8221; instead of &#8220;NAT&#8221;</li>
<li>Once Android TV is started, you&#8217;ll have to connect to your Google account, but using the keyboard might be challenging – you can right click on the USB cable icon that appears at the bottom right of the VirtualBox window, and select your keyboard (be aware it&#8217;s a QWERTY map that is used)</li>
</ol>
<p>After that, go to the Android TV settings, in the &#8220;About&#8221; section, and click several times on the Build Version to enable the Developer Mode. From the developer menu, you can enable the &#8220;Debug USB&#8221;.</p>
<p>Once everything is correctly configured, the Android TV should be visible on your local network, meaning you can use the ADB command to test your app.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2024/09/02/how-to-run-android-tv-9-on-windows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Power Automate: how to verify if a property belongs to an object (apply to SharePoint Date too)</title>
		<link>https://blog.kodono.info/wordpress/2024/01/16/power-automate-how-to-verify-if-a-property-belongs-to-an-object/</link>
					<comments>https://blog.kodono.info/wordpress/2024/01/16/power-automate-how-to-verify-if-a-property-belongs-to-an-object/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Tue, 16 Jan 2024 17:36:30 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=2282</guid>

					<description><![CDATA[We can use this kind of formula (notice the questionmark): if(empty(variables('params')?[variables('fieldName')]), 'fieldName is not part of the object params', variables('params')?[variables('fieldName')]) Then if it either returns &#8220;fieldName is not part of the object params&#8221; or the value. We can use it to check if a date field is empty in a SharePoint List, because when getting [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>We can use this kind of formula (notice the questionmark):<br />
<code>if(empty(variables('params')?[variables('fieldName')]), 'fieldName is not part of the object params', variables('params')?[variables('fieldName')])</code></p>
<p>Then if it either returns &#8220;fieldName is not part of the object params&#8221; or the value.</p>
<p>We can use it to check if a date field is empty in a SharePoint List, because when getting the data from the SP List, when the date field is empty, it&#8217;s not in the result returned – the below code will return <b>true</b> if the date field is empty:<br />
<code>empty(item()?['dateFieldNameId'])</code></p>
<p>For a Currency/Number field you need to use <code>string()</code> as well:<br />
<code>empty(string(item()?['floatFieldNameId']))</code></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2024/01/16/power-automate-how-to-verify-if-a-property-belongs-to-an-object/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Power Automate returns an error about &#8220;InvokerConnectionOverrideFailed&#8221; and &#8220;header.X-MS-APIM-Tokens&#8221;</title>
		<link>https://blog.kodono.info/wordpress/2024/01/16/power-automate-returns-an-error-about-invokerconnectionoverridefailed-and-header-x-ms-apim-tokens/</link>
					<comments>https://blog.kodono.info/wordpress/2024/01/16/power-automate-returns-an-error-about-invokerconnectionoverridefailed-and-header-x-ms-apim-tokens/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Tue, 16 Jan 2024 14:42:28 +0000</pubDate>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=2278</guid>

					<description><![CDATA[While calling a &#8220;Run a Child Flow&#8221; from a Power Automate Flow, you could get an error about &#8220;InvokerConnectionOverrideFailed&#8221; and &#8220;header.X-MS-APIM-Tokens&#8221;. After investigating, to resolve this issue you need to open the &#8220;details&#8221; view of your child flow, and click on the &#8220;Edit&#8221; button from the &#8220;Run only users&#8221; card: Then in the Connections Used [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>While calling a &#8220;Run a Child Flow&#8221; from a Power Automate Flow, you could get an error about &#8220;InvokerConnectionOverrideFailed&#8221; and &#8220;header.X-MS-APIM-Tokens&#8221;.</p>
<p>After investigating, to resolve this issue you need to open the &#8220;details&#8221; view of your child flow, and click on the &#8220;Edit&#8221; button from the <strong>&#8220;Run only users&#8221; card</strong>:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2024/01/run_only_users.png"><img fetchpriority="high" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2024/01/run_only_users.png" alt="" width="501" height="423" class="aligncenter size-full wp-image-2279" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2024/01/run_only_users.png 501w, https://blog.kodono.info/wordpress/wp-content/uploads/2024/01/run_only_users-300x253.png 300w" sizes="(max-width: 501px) 100vw, 501px" /></a></p>
<p>Then in the <strong>Connections Used</strong> section, make sure to select <strong>&#8220;Use this connection (your_username@domain.com)&#8221;</strong> instead of the default &#8220;Provided by run-only user&#8221;. It will permit to run this child flow with your rights.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2024/01/16/power-automate-returns-an-error-about-invokerconnectionoverridefailed-and-header-x-ms-apim-tokens/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deploy a PCF NodeJS app as a scheduled task</title>
		<link>https://blog.kodono.info/wordpress/2022/12/27/deploy-a-pcf-nodejs-app-as-a-scheduled-task/</link>
					<comments>https://blog.kodono.info/wordpress/2022/12/27/deploy-a-pcf-nodejs-app-as-a-scheduled-task/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Tue, 27 Dec 2022 15:23:33 +0000</pubDate>
				<category><![CDATA[Application]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=2222</guid>

					<description><![CDATA[I have a NodeJS app that runs as a process and that executes a task every 15 minutes using node-schedule. We first need a manifest.yml file that contains: --- applications: - name: APP-NAME buildpack: nodejs_buildpack no-route: true health-check-type: process env: OPTIMIZE_MEMORY: true The no-route parameter is true so that we don&#8217;t get a route assigned, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I have a NodeJS app that runs as a process and that executes a task every 15 minutes using <code>node-schedule</code>.</p>
<p>We first need a <b>manifest.yml</b> file that contains:</p>
<pre>
---
applications:
- name: APP-NAME
  buildpack: nodejs_buildpack
  no-route: true
  health-check-type: process
  env:
    OPTIMIZE_MEMORY: true
</pre>
<p>The <code>no-route</code> parameter is <b>true</b> so that we don&#8217;t get a route assigned, and the <code>health-check-type</code> is set to <b>process</b> so that the orchestrator monitors process availability and doesn&#8217;t try to ping a non-existent web endpoint. And <code>OPTIMIZE_MEMORY</code> in <a href="https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#env-block">&#8220;env&#8221; section</a> is based on the <a href="https://docs.cloudfoundry.org/buildpacks/node/node-tips.html">Pivotal recommendations</a>.</p>
<p>If you need to use a local package in your app, you&#8217;ll have to pack it up first. To do it, go to your local module folder, and type <code>npm pack</code>. It will create a <code>.tgz</code> file that you&#8217;ll have to store in a <b>local_modules</b> folder for your app. Next, use <code>npm install .\local_modules\package-1.2.3.tgz</code>.</p>
<p>You can now deploy your app with <code>pcf push APP-NAME</code> and you can read the logs with <code>cf logs APP-NAME --recent</code>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2022/12/27/deploy-a-pcf-nodejs-app-as-a-scheduled-task/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pass an URL parameter to a SharePoint Online form&#8217;s field</title>
		<link>https://blog.kodono.info/wordpress/2022/11/30/pass-an-url-parameter-to-a-sharepoint-online-forms-field/</link>
					<comments>https://blog.kodono.info/wordpress/2022/11/30/pass-an-url-parameter-to-a-sharepoint-online-forms-field/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Wed, 30 Nov 2022 08:43:25 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[sharepoint]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=2170</guid>

					<description><![CDATA[The only way to pass a URL parameter to a SharePoint Online (modern design) form&#8217;s field is to use PowerApps (at least, if you cannot add any JS on your website!). Important warning: when you use PowerApps to manage your form, all edits to the list settings won&#8217;t reflect to the PowerApps form. For example, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The only way to pass a URL parameter to a SharePoint Online (modern design) form&#8217;s field is to use PowerApps (at least, if you cannot add any JS on your website!).</p>
<p><b style="color:red">Important warning</b>: when you use PowerApps to manage your form, all edits to the list settings won&#8217;t reflect to the PowerApps form. For example, if you add a field, it won&#8217;t show up, and you&#8217;ll have to manually update the PowerApps to add it (see at the bottom of this article).</p>
<p>From the list view, go to <code>Integrate</code> then <code>PowerApps</code> and <code>Customize forms</code>:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/integrate.png"><img decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/integrate.png" alt="" width="931" height="161" class="aligncenter size-full wp-image-2172" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/integrate.png 931w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/integrate-300x52.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/integrate-768x133.png 768w" sizes="(max-width: 931px) 100vw, 931px" /></a></p>
<p>Once PowerApps has open the form, you need to do several things.</p>
<h2>1. Load the ID</h2>
<p>We first need to make sure the form will load the required item when we pass the <code>ID</code> URL parameter:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item.png"><img decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item-1024x442.png" alt="" width="1024" height="442" class="aligncenter size-large wp-image-2175" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item-1024x442.png 1024w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item-300x130.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item-768x332.png 768w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item-1536x663.png 1536w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_mode_item.png 1899w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>From the <b>SharepointForm Advanced Settings</b>, we change the <b>DefaultMode</b> to check if we have the <code>ID</code> parameter, and if we don&#8217;t have it, then it should be a New Form, otherwise an Edit Form:</p>
<pre class="brush:powershell">If(IsBlank(Param("ID")), FormMode.New, FormMode.Edit)</pre>
<p>From the <b>SharepointForm Advanced Settings</b>, we change the <b>Item</b> section to check if we have the <code>ID</code> parameter, and if we have it, then we do a lookup in our list to find the data:</p>
<pre class="brush:powershell">If(IsBlank(Param("ID")), SharePointIntegration.Selected, LookUp('NAME OF THE LIST', ID = Value(Param("ID"))))</pre>
<h2>Add a SUBMIT button</h2>
<p>With PowerApps, there is no button to save the changes! We&#8217;ll add a button in the form:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn-1024x274.png" alt="" width="1024" height="274" class="aligncenter size-large wp-image-2178" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn-1024x274.png 1024w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn-300x80.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn-768x206.png 768w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn-1536x411.png 1536w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/save_btn.png 1898w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>In the button&#8217;s properties, we change the <b>onSelect</b> to be:</p>
<pre class="brush:powershell">SubmitForm(SharePointForm1)</pre>
<p>Be aware that the page will stay with the form after clicking on the button. You could want to close using the <a href="https://learn.microsoft.com/en-us/power-platform/power-fx/reference/function-exit">Exit()</a> function, but the user will be redirected on office.com … I&#8217;d recommend to use <a href="https://learn.microsoft.com/en-us/power-platform/power-fx/reference/function-param">Launch()</a> by redirecting your users to a page:</p>
<pre class="brush:powershell">SubmitForm(SharePointForm1); Launch("https://tenant.sharepoint.com/sites/MySite/");</pre>
<h2>Set field&#8217;s value based on URL parameter</h2>
<p>We can finally set the field&#8217;s value based on the parameter in the URL. Select the INPUT zone of the field, and in the <b>Default</b> section we use the below formula:</p>
<pre class="brush:powershell">If(IsBlank(Param("Title")), ThisItem.Title, Param("Title"))</pre>
<p><a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value-1024x281.png" alt="" width="1024" height="281" class="aligncenter size-large wp-image-2179" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value-1024x281.png 1024w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value-300x82.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value-768x211.png 768w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value-1536x422.png 1536w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/title_value.png 1903w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Here my field is called &#8220;Title&#8221; so I decided to use a parameter called &#8220;Title&#8221; as well.</p>
<h2>Link to the form</h2>
<p>We cannot use the <b>NewForm.aspx</b> or <b>EditForm.aspx</b> to access this form, but we need a special link.</p>
<p>Go to your <b>list settings</b>:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/list_settings.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/list_settings.png" alt="" width="934" height="363" class="aligncenter size-full wp-image-2180" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/list_settings.png 934w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/list_settings-300x117.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/list_settings-768x298.png 768w" sizes="auto, (max-width: 934px) 100vw, 934px" /></a></p>
<p>Then go to the <b>form settings</b> (it&#8217;s from there that you can decide to keep PowerApps or use the original Sharepoint Forms), and click on <b>See versions and usage</b>:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_settings.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_settings.png" alt="" width="980" height="274" class="aligncenter size-full wp-image-2181" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_settings.png 980w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_settings-300x84.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/form_settings-768x215.png 768w" sizes="auto, (max-width: 980px) 100vw, 980px" /></a></p>
<p>You&#8217;ll get the <b>App Id</b> from this page:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/app_id.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/app_id.png" alt="" width="273" height="166" class="aligncenter size-full wp-image-2182" /></a></p>
<p>Next, you&#8217;ll use the <b>App Id</b> to forge the URL: <b>https://apps.powerapps.com/play/providers/Microsoft.PowerApps/apps/APP_ID</b><br />
With our example, the URL will be: <a href="https://apps.powerapps.com/play/providers/Microsoft.PowerApps/apps/c6f23ac1-dcbd-4daf-925e-2701ab241ca0">https://apps.powerapps.com/play/providers/Microsoft.PowerApps/apps/c6f23ac1-dcbd-4daf-925e-2701ab241ca0</a></p>
<p>You can now pass the URL parameter: <b>https://apps.powerapps.com/play/providers/Microsoft.PowerApps/apps/APP_ID?Title=Hello%20World</b><br />
And an ID to retrieve an existing item: <b>https://apps.powerapps.com/play/providers/Microsoft.PowerApps/apps/APP_ID?Title=Hello%20World&#038;ID=2</b></p>
<h2>How to use it with a LookUp column?</h2>
<p>If you want to auto-select a LookUp field using an URL parameter, you need to do a few things…</p>
<p>First, we need to add the related table. To do so, click on <b>Data</b> in the left navigation bar and search for <b>SharePoint</b>:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/datasource_sharepoint.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/datasource_sharepoint.png" alt="" width="351" height="512" class="aligncenter size-full wp-image-2188" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/datasource_sharepoint.png 351w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/datasource_sharepoint-206x300.png 206w" sizes="auto, (max-width: 351px) 100vw, 351px" /></a></p>
<p>Search for the table and add it.</p>
<p>Second (optional) step: click on the Lookup field in the form and change the <b>Items</b> to show a list of options – if no &#8220;Lookup&#8221; ID in the URL, then we use the default list of options:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options-1024x218.png" alt="" width="1024" height="218" class="aligncenter size-large wp-image-2192" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options-1024x218.png 1024w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options-300x64.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options-768x163.png 768w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options-1536x327.png 1536w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/items_options.png 1898w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>The below formula permits to retrieve the &#8220;ID&#8221; and &#8220;Title&#8221; from the distant list, base on the &#8220;Lookup&#8221; parameter, and to rename the result as <code>{Id:"ID", Value:"Title"}</code>:</p>
<pre class="brush:powershell">If(IsBlank(Param("Lookup")), Choices([@'CURRENT LIST NAME'].COLUMN_NAME), RenameColumns(ShowColumns(Filter('DISTANT LIST NAME', ID = Value(Param("Lookup"))), "ID", "Title"), "ID", "Id", "Title", "Value"))</pre>
<p>Third, click on the Lookup field in the form and change the <b>DefaultSelectedItems</b> to select the item from the list of options:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items-1024x204.png" alt="" width="1024" height="204" class="aligncenter size-large wp-image-2193" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items-1024x204.png 1024w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items-300x60.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items-768x153.png 768w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items-1536x307.png 1536w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/default_selected_items.png 1898w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>The below formula returns an empty selection with <code>{Id:"", Value:""}</code> when no URL param, otherwise it returns the first record for our lookup:</p>
<pre class="brush:plain">If(IsBlank(Param("Lookup")), {Id:"", Value:""}, First(RenameColumns(ShowColumns(Filter('DISTANT LIST NAME', ID = Value(Param("Lookup"))), "ID", "Title"), "ID", "Id", "Title", "Value")))</pre>
<p>And finally, we can pass <b>Lookup=ID</b> in the URL to select the related item in the other list</p>
<h2>How to deal with new fields?</h2>
<p>If you add a new field to your list&#8217;s settings, you&#8217;ll have to edit the form in PowerApps, and then edit the fields and add the new one:<br />
<a href="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field.png"><img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field-1024x239.png" alt="" width="1024" height="239" class="aligncenter size-large wp-image-2197" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field-1024x239.png 1024w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field-300x70.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field-768x179.png 768w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field-1536x359.png 1536w, https://blog.kodono.info/wordpress/wp-content/uploads/2022/11/add_field.png 1906w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>(I used <a href="https://www.about365.nl/2020/08/06/passing-parameters-to-your-power-apps-sharepoint-form/">this article</a> as a starting point)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2022/11/30/pass-an-url-parameter-to-a-sharepoint-online-forms-field/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debug a third party Android APK</title>
		<link>https://blog.kodono.info/wordpress/2021/11/29/debug-a-third-party-android-apk/</link>
					<comments>https://blog.kodono.info/wordpress/2021/11/29/debug-a-third-party-android-apk/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Mon, 29 Nov 2021 15:14:42 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=2097</guid>

					<description><![CDATA[(inspired by this blog post) 1) Install smalidea plugin Download the smalidea plugin (see also the related Github Repository). Open up Android Studio and you should see the welcome screen like the one on screenshot below (if not, close your current project by selecting File -> Close project), go to the Plugins section, and from [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>(inspired by <a href="https://malacupa.com/2018/11/11/debug-decompiled-smali-code-in-android-studio-3.2.html">this blog post</a>)</p>
<h2>1) Install smalidea plugin</h2>
<p>Download the <a href="https://bitbucket.org/JesusFreke/smalidea/downloads/">smalidea plugin</a> (see also the related <a href="https://github.com/JesusFreke/smalidea">Github Repository</a>).</p>
<p>Open up <a href="https://developer.android.com/studio">Android Studio</a> and you should see the welcome screen like the one on screenshot below (if not, close your current project by selecting <code>File -> Close project</code>), go to the <code>Plugins</code> section, and from the wheel icon, select <code>Install Plugin from Disk...</code>. Select the smalidea plugin (ZIP file) you downloaded.<br />
<img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture.png" alt="Android Studio welcome screen" width="812" height="349" class="aligncenter size-full wp-image-2098" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture.png 812w, https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-300x129.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-768x330.png 768w" sizes="auto, (max-width: 812px) 100vw, 812px" /></p>
<h2>2) Get the third party APK</h2>
<p>You first need <strong>to know the type of platform</strong> where you&#8217;ll do your debug tests. To do so, make sure <b>your device is connected to your computer</b> (it could also be a virtual device started from the AVD Manager) with <code>adb devices</code>.<br />
Then, use the command <code>adb shell getprop ro.product.cpu.abi</code> to find the type of processor you have. When I use my phone, I got <b>arm64-v8a</b>.</p>
<p>Go to an APK platform, like <a href="https://apkcombo.com/">https://apkcombo.com/</a> and search for the Android app you want to debug. Download the <b>APK version</b> that fits to the type you found before:<br />
<img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-1.png" alt="screenshot of https://apkcombo.com/" width="992" height="667" class="aligncenter size-full wp-image-2100" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-1.png 992w, https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-1-300x202.png 300w, https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-1-768x516.png 768w" sizes="auto, (max-width: 992px) 100vw, 992px" /></p>
<h2>2bis) Have a look at the APK content</h2>
<p>You can use <a href="https://github.com/skylot/jadx">JADX</a> to open the APK and have a quick look at the code.</p>
<h2>3) Decompile APK</h2>
<p>With <a href="https://ibotpeaches.github.io/Apktool/">APKTool</a>, we&#8217;ll use the command: <code>.\apktool.bat d ".\the_original_app_from_apkcombo.com.apk" -o app_to_debug</code>.<br />
A folder called <b>app_to_debug</b> is created with the decompiled version of the application.</p>
<p>Next, we need to copy the source files: <b>create a folder called &#8220;src&#8221;</b> in the new <b>app_to_debug</b> folder, and type <code>cp -R smali*/* src/</code>.</p>
<h2>4) Import project in Android Studio</h2>
<p><b>Open an existing Android Studio project</b> and select the <code>app_to_debug</code> folder where you unpacked APK.</p>
<p>Once the project loads, you need to tell the IDE where is your source code. Make sure you&#8217;re using the &#8220;Project view&#8221; in the left side panel:<br />
<img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-2.png" alt="" width="201" height="143" class="aligncenter size-full wp-image-2105" /></p>
<p>Now you can see folder structure in your left panel. Find <code>src/</code> subfolder right click it and select <code>Mark Directory as -> Sources Root</code>.</p>
<h2>5) Prepare App for Debugging</h2>
<p>Open <code>AndroidManifest.xml</code> from the <code>app_to_debug</code> and find the XML element <code>&lt;application&gt;</code>. Add the attribute <code>android:debuggable</code> with value <b>&#8220;true&#8221;</b>. Example:</p>
<pre class="brush:xml">
&lt;application android:debuggable="true" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:largeHeap="true" android:name="org.horaapps.leafpic.App" android:theme="@style/Theme.AppCompat"&gt;
</pre>
<h2>6) Repack to APK</h2>
<p>You can now repack to APK with the command <code>.\apktool.bat b -d ".\app_to_debug\" -o app_unsigned.apk</code></p>
<h2>7) Sign the APK</h2>
<h3>7a) Create a keystore</h3>
<p>You first need a keystore using <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html">keytool</a> and type the below command:<br />
<code>keytool -genkeypair -v -keystore mykey.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000</code></p>
<p>Several questions you&#8217;ll be asked, as well as a password. Make sure to remember the password for later.</p>
<h3>7b) Validate the APK</h3>
<p>You then need <code>zipalign</code> that can be found in the Android SDK folder (e.g. <em>C:\Users\USERNAME\AppData\Local\Android\Sdk\build-tools\31.0.0\zipalign.exe</em>) to validate your APK:<br />
<code>.\Path\to\Android\Sdk\build-tools\31.0.0\zipalign.exe -f -v 4 .\app_unsigned.apk .\app_ready.apk</code></p>
<h3>7c) Sign the APK</h3>
<p>Finally you can sign the new created APK with <code>apksigner</code>:<br />
<code>.\Path\to\Android\Sdk\build-tools\31.0.0\apksigner.bat sign --ks .\mykey.keystore --ks-key-alias app_to_debug --out .\app_signed.apk .\app_ready.apk</code></p>
<h2>8) Install the APK</h2>
<p>You can install it using <code>adb install app_signed.apk</code></p>
<h2>9) Prepare the host</h2>
<p>On your Android device, go to <code>Settings -> Developer options</code> and set <code>USB debugging</code> and <code>Wait for debugger options on</code>. The latter is optional but useful as it allows you wait for debugger connection and not to run app yet.</p>
<p>Finally, you should tap on <code>Select debug app</code> and choose the app you just installed. After all of these, your Developer options menu should look somewhat like this:<br />
<img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-3.png" alt="" width="360" height="619" class="aligncenter size-full wp-image-2121" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-3.png 360w, https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-3-174x300.png 174w" sizes="auto, (max-width: 360px) 100vw, 360px" /></p>
<p>Now, <b>launch the app</b> on the Android device, and you&#8217;ll get the below message:<br />
<img loading="lazy" decoding="async" src="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-4.png" alt="" width="360" height="234" class="aligncenter size-full wp-image-2122" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-4.png 360w, https://blog.kodono.info/wordpress/wp-content/uploads/2021/11/Capture-4-300x195.png 300w" sizes="auto, (max-width: 360px) 100vw, 360px" /></p>
<h2>10) Forward debugger port</h2>
<p>You can use the adb&#8217;s port forwarding feature and forward JDWP service where application&#8217;s debug interface is listening.</p>
<p>Find the JDWP port with the command <code>adb jdwp</code>, then use this port with the command:<br />
<code>adb forward tcp:5005 jdwp:JDWP_PORT</code></p>
<h2>11) Connect Debugger</h2>
<p>Go to Android Studio and from its top menu bar choose <code>Run -> Debug…</code>, then a small message appears with one unique option that is <code>Edit Configurations...</code>. There, in the window, use a plus (+) button at the opt left, and add a new configuration of type <b>Remote</b>. Leave the default configuration as is. Click the Debug button and your app should be running with the attached debugger which means it will stop once a breakpoint is hit and you can investigate the content of app&#8217;s variables.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2021/11/29/debug-a-third-party-android-apk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>exim4 : &#8220;remote_smtp: message is too big (transport limit = 1)&#8221;</title>
		<link>https://blog.kodono.info/wordpress/2019/07/23/exim4-remote_smtp-message-is-too-big-transport-limit-1/</link>
					<comments>https://blog.kodono.info/wordpress/2019/07/23/exim4-remote_smtp-message-is-too-big-transport-limit-1/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Tue, 23 Jul 2019 15:37:27 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=1970</guid>

					<description><![CDATA[After diging around for an exim4 problem (remote_smtp: message is too big (transport limit = 1)), I found the answer in this post: Add &#8220;IGNORE_SMTP_LINE_LENGTH_LIMIT=1&#8221; in the exim4 config file (/etc/exim4/update-exim4.conf.conf), then restart exim4]]></description>
										<content:encoded><![CDATA[<p>After diging around for an exim4 problem (<em>remote_smtp: message is too big (transport limit = 1)</em>), I found the answer <a href="https://unix.stackexchange.com/a/495006/363676">in this post</a>:</p>
<blockquote><p>Add &#8220;<code>IGNORE_SMTP_LINE_LENGTH_LIMIT=1</code>&#8221; in the exim4 config file (<code>/etc/exim4/update-exim4.conf.conf</code>), then restart exim4</p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2019/07/23/exim4-remote_smtp-message-is-too-big-transport-limit-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Émuler Raspberry Pi sous Windows</title>
		<link>https://blog.kodono.info/wordpress/2018/01/04/emuler-raspberry-pi-sous-windows/</link>
					<comments>https://blog.kodono.info/wordpress/2018/01/04/emuler-raspberry-pi-sous-windows/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Thu, 04 Jan 2018 11:36:13 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Français]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=1878</guid>

					<description><![CDATA[Depuis que j&#8217;ai fait assistant-plugins, j&#8217;ai plusieurs utilisateurs qui m&#8217;ont demandé comment l&#8217;installer sur leur Raspberry. Ce système est censé être similaire à une Debian, cependant ils semblent y avoir des différences&#8230; J&#8217;ai donc cherché à émuler cet OS sous mon Windows 10. Sources : https://blogs.msdn.microsoft.com/iliast/2016/11/10/how-to-emulate-raspberry-pi/ https://enavarro.me/emuler-un-raspberry-pi-avec-qemu.html Voici les étapes : Télécharger la dernière version [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Depuis que j&#8217;ai fait <a href="https://aymkdn.github.io/assistant-plugins/">assistant-plugins</a>, j&#8217;ai plusieurs utilisateurs qui m&#8217;ont demandé comment l&#8217;installer sur leur Raspberry. Ce système est censé être similaire à une Debian, cependant ils semblent y avoir des différences&#8230; J&#8217;ai donc cherché à émuler cet OS sous mon Windows 10.</p>
<p>Sources :</p>
<ul>
<li><a href="https://blogs.msdn.microsoft.com/iliast/2016/11/10/how-to-emulate-raspberry-pi/">https://blogs.msdn.microsoft.com/iliast/2016/11/10/how-to-emulate-raspberry-pi/</a></li>
<li><a href="https://enavarro.me/emuler-un-raspberry-pi-avec-qemu.html">https://enavarro.me/emuler-un-raspberry-pi-avec-qemu.html</a></li>
</ul>
<p>Voici les étapes :</p>
<ol id="steps-rpi">
<li style="margin-bottom:20px">Télécharger la dernière version disponible de QEMU sur le site <a href="https://qemu.weilnetz.de/w32/">https://qemu.weilnetz.de/w32/</a> (par exemple <em><a href="https://qemu.weilnetz.de/w32/2017/qemu-w32-setup-20171211.exe">qemu-w32-setup-20171211.exe</a></em> au moment où j&#8217;écris cet article)</li>
<li style="margin-bottom:20px">Une fois téléchargé, on va faire un clique-droit et dézipper <b>qemu-w32-setup-20171211.exe</b> vers <b>qemu-w32-setup-20171211</b></li>
<li style="margin-bottom:20px">Télécharger la dernière version de Raspbian via <a href="https://www.raspberrypi.org/downloads/raspbian/">https://www.raspberrypi.org/downloads/raspbian/</a> dans le répertoire <b>qemu-w32-setup-20171211/</b> (ou via ce lien <a href="https://downloads.raspberrypi.org/raspbian_latest">https://downloads.raspberrypi.org/raspbian_latest</a>) (par exemple je prends la version lite qui se nomme <em>2017-11-29-raspbian-stretch-lite.zip</em>)</li>
<li style="margin-bottom:20px">Télécharger le kernel dans le répertoire <b>qemu-w32-setup-20171211/</b> via <a href="https://github.com/dhruvvyas90/qemu-rpi-kernel">https://github.com/dhruvvyas90/qemu-rpi-kernel</a> (par exemple j&#8217;ai pris <em><a href="https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.4.34-jessie">kernel-qemu-4.4.34-jessie</a></em>)</li>
<li style="margin-bottom:20px">On va immédiatement agrandir la taille de notre image de 5G (pour éviter d&#8217;avoir des problèmes d&#8217;espace disque plus tard). Pour cela on va se rendre dans le dossier <b>qemu-w32-setup-20171211/</b> avec CMD et on va taper : <code>qemu-img.exe resize 2017-11-29-raspbian-stretch-lite +5G</code></li>
<li style="margin-bottom:20px">On peut lancer l&#8217;émulation avec la commande (<a href="https://qemu.weilnetz.de/doc/qemu-doc.html">voir tous les paramètres disponibles</a>) : <code>qemu-system-arm.exe -kernel <your_kernel_image> -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive "file=<your_rapsbian_image>,index=0,media=disk,format=raw" -redir tcp:2222::22</code> <br />(ce qui va donner chez moi : <code>qemu-system-arm.exe -kernel kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive "file=2017-11-29-raspbian-stretch-lite.img,index=0,media=disk,format=raw" -redir tcp:2222::22</code>)</li>
<li style="margin-bottom:20px">Si tout se passe comme prévu l&#8217;image devrait démarrer et arriver jusqu&#8217;à vous demander un login (<b>pi</b>) et pass (<b>raspberry</b>) &#8230; Attention, par défaut c&#8217;est un clavier QWERTY qui est appliqué, il faut donc taper <b>rqspberry</b> pour le password.</li>
<li>On va passer le clavier en français en tapant : <code>sudo apt-get install console-data</code>, puis <code>sudo sudo dpkg-reconfigure console-data</code><br />On choisit <b>select keymap from fullist</b> puis <b>pc / azerty / French / Same as X11 (latin 9) / Standard</b>.</li>
<li>Si le clavier continue à être en anglais, taper : <code>sudo dpkg-reconfigure keyboard-configuration</code> en sélectionnant le clavier par défaut proposé, puis pour la langue, choisir <b>Other</b> puis <b>French</b>, et ensuite les propositions par défaut.<br />Et finalement la commande : <code>sudo setupcon</code></li>
<li>On va maintenant finir d&#8217;agrandir notre partition. Pour cela on tape : <code>sudo fdisk /dev/sda</code> et on suit les instructions ci-dessous :
<ul>
<li>On affiche la table des partitions avec la lettre <b>&#8220;p&#8221;</b>. On va noter le chiffre qui apparait dans la colonne <b>Start</b> pour la deuxième ligne (celle qui correspond à la partition de type Linux) (chez moi cela vaut <em>94208</em>)</li>
<li>On efface la partition principale avec la lettre <b>&#8220;d&#8221;</b> (cela devrait être la 2)</li>
<li>On crée une nouvelle partition avec la lettre <b>&#8220;n&#8221;</b>, puis on choisit primary avec <b>&#8220;p&#8221;</b> et la position <b>&#8220;2&#8221;</b></li>
<li>Pour le premier secteur on va utiliser la valeur trouvée précédemment (<em>94208</em> pour moi)</li>
<li>On appuie sur <b>&#8220;Enter&#8221;</b> pour le last sector (pour utiliser la valeur proposée)</li>
<li>À la question <b>Do you want to remove the signature?</b>, répondre <b>&#8220;N&#8221;</b></li>
<li>On écrit la table de partition avec <b>&#8220;w&#8221;</b></li>
<li>Puis on reboot avec <code>sudo shutdown -r now</code></li>
<li>Après le reboot on va terminer par : <code>sudo resize2fs /dev/sda2</code></li>
</ul>
</li>
<li>Maintenant on va augmenter la taille du swap : <code>sudo nano /etc/dphys-swapfile</code> où on va remplacer <b>CONF_SWAPSIZE=100</b> par <b>CONF_SWAPSIZE=1024</b></li>
<li>On redémarre le service avec : <code>sudo /etc/init.d/dphys-swapfile stop</code> puis <code>sudo /etc/init.d/dphys-swapfile start</code></li>
</ol>
<style>
#steps-rpi > li { margin-bottom:20px }
</style>
<p>Maintenant l&#8217;émulateur est prêt à être utilisé. Se reporter aux deux sources fournies en début d&#8217;article pour plus de détails et des options supplémentaires !</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2018/01/04/emuler-raspberry-pi-sous-windows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Capture HTTP(S) traffic from Android using a sniffer</title>
		<link>https://blog.kodono.info/wordpress/2016/11/07/capture-https-traffic-from-android-using-a-sniffer/</link>
					<comments>https://blog.kodono.info/wordpress/2016/11/07/capture-https-traffic-from-android-using-a-sniffer/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Mon, 07 Nov 2016 21:39:57 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=1711</guid>

					<description><![CDATA[I wanted to debug an Android app that uses HTTPS requests with a JSON API. Thanks to this article I&#8217;ve been able to use my Windows 10 computer to get all the network from my Android phone thru my local network and decode the HTTPS requests ! I&#8217;m going to summarize the steps from the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I wanted to debug an Android app that uses HTTPS requests with a JSON API. Thanks to <a href="http://www.cantoni.org/2013/11/06/capture-android-web-traffic-fiddler">this article</a> I&#8217;ve been able to use my Windows 10 computer to get all the network from my Android phone thru my local network and decode the HTTPS requests !</p>
<p>I&#8217;m going to summarize the steps from the above article:</p>
<ol>
<li>Download and Install <a href="http://fiddler2.com/">Fiddler</a> on your computer</li>
<li>Once Fiddler is installed, launch it and:
<ul>
<li>Click menu Tools > Options, then select the Connections tab</li>
<li>Make note of the “Fiddler listens on” port (normally it’s 8888)</li>
<li>Make sure the check box for “Allow remote computer to connect” is checked</li>
<li>Switch to the HTTPS tab</li>
<li>Make sure the check boxes for “Capture HTTPS Connects” and “Decrypt HTTPS traffic” are both checked</li>
<li>Restart Fiddler</li>
</ul>
</li>
<li>Go to your Android phone then:
<ul>
<li>Tap on Settings, then Wi-Fi</li>
<li>Find the network on which you’re connected (normally the first one listed), then tap and hold</li>
<li>Choose Modify network from the pop-up</li>
<li>Scroll down and enable “Show advanced options”</li>
<li>Change “Proxy settings” to Manual</li>
<li>Under “Proxy host name” enter the Windows PC IP address from above</li>
<li>Under “Proxy port” enter the Fiddler port from above (usually 8888)</li>
<li>Tap Save and wait a moment for the network to reconnect</li>
</ul>
</li>
<li>Now we need to add the certificate in Android to have the HTTPS working:
<ul>
<li>On Android start the Chrome browser</li>
<li>Navigate to http://IP_ADDRESS_WHERE_FIDDLER_IS:8888/ or <a href="http://ipv4.fiddler:8888">http://ipv4.fiddler:8888</a></li>
<li>Tap on the link for the “Fiddler Root Certificate”</li>
<li>Name the certificate “Fiddler” and install it (entering your PIN or password if prompted)</li>
</ul>
</li>
</ol>
<p>You&#8217;re now ready to capture the traffic on Fiddler!</p>
<p>Once you&#8217;re done you can switch back to normal by following the below steps:</p>
<ol>
<li>Tap on Settings, then Wi-Fi</li>
<li>Find the network on which you’re connected (should be the first one listed), then tap and hold</li>
<li>Choose Modify network from the pop-up</li>
<li>Scroll down and select (enable) “Show advanced options”</li>
<li>Change “Proxy settings” to None</li>
<li>Tap Save and wait a moment for the network to reconnect</li>
<li>Go up a level in settings to Security</li>
<li>Tap Trusted credentials, then select the User tab</li>
<li>Tap on the Fiddler “Do not trust” certificate, then scroll down to remove it</li>
<li>You may need to power cycle your device to get all apps to forget about the Fiddler certificate (e.g., the Chrome browser will continue to try to use it for a while)</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2016/11/07/capture-https-traffic-from-android-using-a-sniffer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Illegal use of $_SERVER. You must use the request class or request_var() to access input data. [phpBB]</title>
		<link>https://blog.kodono.info/wordpress/2016/04/21/illegal-use-of-_server-you-must-use-the-request-class-or-request_var-to-access-input-data-phpbb/</link>
					<comments>https://blog.kodono.info/wordpress/2016/04/21/illegal-use-of-_server-you-must-use-the-request-class-or-request_var-to-access-input-data-phpbb/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Thu, 21 Apr 2016 15:15:59 +0000</pubDate>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[english]]></category>
		<guid isPermaLink="false">https://blog.kodono.info/wordpress/?p=1645</guid>

					<description><![CDATA[When I want to update my phpBB forum I get this annoying message because I&#8217;m using a homemade auth file where $_SERVER is used. I found the solution on the phpBB forum: Modified /forums/config/parameters.yml. Set core.disable_super_globals to false and delete the cache]]></description>
										<content:encoded><![CDATA[<p>When I want to update my phpBB forum I get this annoying message because I&#8217;m using a homemade auth file where <code>$_SERVER</code> is used.</p>
<p>I found the solution on <a href="https://www.phpbb.com/community/viewtopic.php?p=14202666#p14202666">the phpBB forum</a>: </p>
<blockquote><p>Modified /forums/config/parameters.yml. Set core.disable_super_globals to false and delete the cache</p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2016/04/21/illegal-use-of-_server-you-must-use-the-request-class-or-request_var-to-access-input-data-phpbb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>&#8220;En attente d&#8217;éléments à copier&#8221; et &#8220;attente de l&#8217;application des modifications&#8221; [iOS]</title>
		<link>https://blog.kodono.info/wordpress/2014/09/18/en-attente-delements-a-copier-et-attente-de-lapplication-des-modifications-ios/</link>
					<comments>https://blog.kodono.info/wordpress/2014/09/18/en-attente-delements-a-copier-et-attente-de-lapplication-des-modifications-ios/#comments</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Thu, 18 Sep 2014 15:56:49 +0000</pubDate>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[iOS]]></category>
		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=1411</guid>

					<description><![CDATA[Avec la sortie d&#8217;iOS 8 j&#8217;ai voulu mettre à jour mon iPad. Malheureusement, au moment de restaurer mes données, iTunes m&#8217;indique : « En attente d&#8217;éléments à copier » et tourne dans le vide pendant un long moment. En fait j&#8217;ai découvert que cela était dû à des applications qui ne doivent pas être compatibles, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Avec la sortie d&#8217;iOS 8 j&#8217;ai voulu mettre à jour mon iPad. Malheureusement, au moment de restaurer mes données, iTunes m&#8217;indique : « En attente d&#8217;éléments à copier » et tourne dans le vide pendant un long moment.</p>
<p>En fait j&#8217;ai découvert que cela était dû à des applications qui ne doivent pas être compatibles, ou qui posent problèmes. En l&#8217;occurrence celles des chaines françaises D8 et D17. Pour corriger le soucis je suis allé dans l&#8217;onglet <code>Apps</code> de mon iPad dans iTunes, puis j&#8217;ai supprimé les applications dont je n&#8217;avais pas besoin, et celles incriminées. Ensuite il suffit de rappuyer sur le bouton Synchroniser et de vérifier que cette fois ça fonctionne !</p>
<p>Pour tester, vous pouvez retirer toutes les applications, puis voir si ça passe. Si cela ne passe toujours pas, essayez de désactiver les autres synchronisations (comme les chansons, films, images, &#8230;) jusqu&#8217;à ce que vous trouviez ce qui fait buguer le processus. Si cela vient bien des applications, tentez de les installer une à une&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2014/09/18/en-attente-delements-a-copier-et-attente-de-lapplication-des-modifications-ios/feed/</wfw:commentRss>
			<slash:comments>25</slash:comments>
		
		
			</item>
		<item>
		<title>Problem with the People Picker of Sharepoint</title>
		<link>https://blog.kodono.info/wordpress/2014/09/03/problem-with-the-people-picker-of-sharepoint/</link>
					<comments>https://blog.kodono.info/wordpress/2014/09/03/problem-with-the-people-picker-of-sharepoint/#comments</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Wed, 03 Sep 2014 11:05:32 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sharepoint]]></category>
		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=1406</guid>

					<description><![CDATA[For one of my list I&#8217;ve had a very weird issue: one people picker didn&#8217;t work properly. If I entered a name and clicked to check it, then it didn&#8217;t work. If I saved it and then got back to the form, the value didn&#8217;t appear. This strange behavior is due to a missing SPAN [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For one of my list I&#8217;ve had a very weird issue: one people picker didn&#8217;t work properly. If I entered a name and clicked to check it, then it didn&#8217;t work. If I saved it and then got back to the form, the value didn&#8217;t appear.</p>
<p>This strange behavior is due to a missing SPAN element with <b>_errorLabel</b> as an ID. I have no clue why Sharepoint failed to create this SPAN element&#8230; And the error is related to the <code>EntityEditorCallback</code> function that tries to use the SPAN element, but as it doesn&#8217;t exist, it returns NULL and fails the function.</p>
<p>To fix it, I&#8217;m checking if the SPAN element exists, and if not I create it.<br />
The below code must be called <b>AFTER</b> the line in your document that says :</p>
<pre class="brush:javascript">
document.write('&lt;script type="text/javascript" src="/_layouts/entityeditor.js?rev=vXD0hrzDeHYHbfW8aRSMjA%3D%3D">&lt;/' + 'script>');
</pre>
<p>The code to fix this issue is:</p>
<pre class="brush:javascript">
// some People Picker are broken for an unknown reason...
// the behavior : we cannot check the name, and the "default" value is not set when editing
// the fix : the span with _errorLabel is not created, so we need to create it
if (typeof EntityEditorCallback === "function") {
  var _EntityEditorCallback = EntityEditorCallback;
  window.EntityEditorCallback = function(result,ctx,preventAutoPostBack) {
    var errorControl=document.getElementById(getSubControlID(ctx, 'errorLabel'));
    // if errorControl doesn't exist then we create it
    if (!errorControl) {
      var e=document.getElementById(ctx);
      var spans=e.getElementsByTagName("td");
      for (var i=0; i&lt;spans.length; i++) {
        if (spans[i].getAttribute("colspan") == 3) {
          spans[i].innerHTML = '<span id="'+ctx+'_errorLabel" class="ms-error"></span>';
          break;
        }
      }
    }
    // call the original function
    _EntityEditorCallback(result,ctx,preventAutoPostBack);
  }
}
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2014/09/03/problem-with-the-people-picker-of-sharepoint/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Comment déboguer son code Javascript ? [programmation]</title>
		<link>https://blog.kodono.info/wordpress/2011/08/19/comment-deboguer-son-code-javascript-programmation/</link>
					<comments>https://blog.kodono.info/wordpress/2011/08/19/comment-deboguer-son-code-javascript-programmation/#respond</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Fri, 19 Aug 2011 14:04:19 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=716</guid>

					<description><![CDATA[Évidemment vous pouvez utiliser Firebug (add-on Firefox) pour trouver les problèmes dans votre code, que ce soit des erreurs de syntax (syntax error) ou autre. Même s&#8217;il semble qu&#8217;avec la version de Firebug 1.8.x l&#8217;information fournie ne soit plus autant utile (mais espérons que ce ne soit que temporaire). Il existe des sites web qui [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Évidemment vous pouvez utiliser <a href="http://getfirebug.com/">Firebug</a> (add-on Firefox) pour trouver les problèmes dans votre code, que ce soit des erreurs de syntax (<i>syntax error</i>) ou autre. Même s&#8217;il semble qu&#8217;avec la version de Firebug 1.8.x l&#8217;information fournie ne soit plus autant utile (mais espérons que ce ne soit que temporaire).</p>
<p>Il existe des sites web qui fournissent un débogage du Javascript, et mon préféré est <a href="http://www.javascriptlint.com/online_lint.php">http://www.javascriptlint.com/</a>. Il vous montrera rapidement ce qu&#8217;il ne va pas dans ce que vous avez entré : oubli de parenthèse, de point-virgule, mauvaise déclaration, &#8230;</p>
<p>De plus si vous utilisez <a href="http://notepad-plus-plus.org/fr/">Notepad++</a> ou un autre éditeur, il est facile d&#8217;adjoindre la puissance de <a href="http://www.javascriptlint.com/download.htm">JSLint à votre programme préféré</a>. Dans ce <a href="http://stackoverflow.com/questions/1046810/using-jslint-in-notepad">thread</a> on vous explique tout.<br />
En l&#8217;occurrence voici comment faire pour Notepad++ :</p>
<ol>
<li>Télécharger <a href="http://www.javascriptlint.com/download.htm">la version pour Windows</a>, puis dézippez le fichier;</li>
<li>Maintenant ouvrez Notepad++, puis dans le menu <em>Plugins</em> vous trouvez <em>NppExec</em>, et après <em>Execute&#8230;</em> (ou touche F6);</li>
<li>Dans la zone qui apparait entrez la commande suivante (en supposant que vous ayez mis le fichier dézipppé dans &#8220;C:\Program Files\JavascriptLint\&#8221;) :<br />
<code>"C:\Program Files\JavascriptLint\jsl.exe" -conf "C:\Program Files\JavascriptLint\jsl.default.conf" -process "$(FULL_CURRENT_PATH)"</code></li>
<li>Cliquez sur &#8220;Save&#8230;&#8221; et donnez un nom à cette commande;</li>
<li>Vous pouvez désormais utilisez JSLint directement dans Notepad++</li>
<li>Dans le fichier <em>jsl.default.conf</em> vous trouverez les options et les warnings à supprimer</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2011/08/19/comment-deboguer-son-code-javascript-programmation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>IE8 Developer Toolbar qui ne s&#8217;affiche plus [astuce]</title>
		<link>https://blog.kodono.info/wordpress/2011/08/17/ie8-developer-toolbar-qui-ne-saffiche-plus-astuce/</link>
					<comments>https://blog.kodono.info/wordpress/2011/08/17/ie8-developer-toolbar-qui-ne-saffiche-plus-astuce/#comments</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Wed, 17 Aug 2011 09:20:29 +0000</pubDate>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=704</guid>

					<description><![CDATA[Avec Internet Explorer il est possible d&#8217;utiliser un débogueur qu&#8217;ils nomment &#8220;IE Developer Toolbar&#8221;. C&#8217;est très peu puissant, mais quand on doit travailler sur ce navigateur ça peut être utile&#8230; Pour l&#8217;activer il faut appuyer sur la touche F12, seulement, dans mon cas, même si elle apparaissait bien dans la liste des fenêtres ouvertes, quand [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Avec Internet Explorer il est possible d&#8217;utiliser un débogueur qu&#8217;ils nomment &#8220;IE Developer Toolbar&#8221;. C&#8217;est très peu puissant, mais quand on doit travailler sur ce navigateur ça peut être utile&#8230;</p>
<p>Pour l&#8217;activer il faut appuyer sur la touche F12, seulement, dans mon cas, même si elle apparaissait bien dans la liste des fenêtres ouvertes, quand je cliquais dessus rien ne se passait : elle ne s&#8217;ouvrait pas ! La solution consiste à faire un <strong>SHIFT + Clic Droit</strong> sur la fenêtre puis choisir <strong>&#8220;Maximize&#8221;</strong> (ou &#8220;Agrandir&#8221; en français), et là votre Developer Toolbar va s&#8217;ouvrir en grand. Les pré-réglages étant mauvais, la fenêtre s&#8217;ouvre dans un étrange mode.</p>
<p>Simple, mais il fallait y penser&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2011/08/17/ie8-developer-toolbar-qui-ne-saffiche-plus-astuce/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Débogage Javascript et PHP dans Firebug [Programmation]</title>
		<link>https://blog.kodono.info/wordpress/2009/04/16/debogage-javascript-et-php-dans-firebug-programmation/</link>
					<comments>https://blog.kodono.info/wordpress/2009/04/16/debogage-javascript-et-php-dans-firebug-programmation/#comments</comments>
		
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
		<pubDate>Thu, 16 Apr 2009 06:28:47 +0000</pubDate>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=55</guid>

					<description><![CDATA[[niveau: expert] Sur l&#8217;excellent blog Ajaxian je viens de découvrir qu&#8217;il existe un plugin au module Firebug (dont je parlais justement hier) qui permet de déboguer du PHP en console ! Cette petite merveille se nomme FirePHP et m&#8217;a l&#8217;air prometteur au vue des images: Je ne code actuellement pas en PHP, mais je dois [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Sur l&#8217;excellent blog <a href="http://ajaxian.com/archives/firephp-tying-together-firebug-and-php">Ajaxian</a> je viens de découvrir qu&#8217;il existe un plugin au module Firebug (<a href="http://blog.kodono.info/wordpress/2009/04/15/les-extensions-a-avoir-firefox/">dont je parlais justement hier</a>) qui permet de déboguer du PHP en console ! Cette petite merveille se nomme <a href="http://www.christophdorn.com/Blog/2009/04/03/how-to-integrate-firephp-for-ajax-development/">FirePHP</a> et m&#8217;a l&#8217;air prometteur au vue des images:<br />
<img loading="lazy" decoding="async" src="http://blog.kodono.info/wordpress/wp-content/uploads/2009/04/20090416_firephp.png" alt="firephp" title="firephp" width="422" height="457" class="aligncenter size-full wp-image-56" srcset="https://blog.kodono.info/wordpress/wp-content/uploads/2009/04/20090416_firephp.png 422w, https://blog.kodono.info/wordpress/wp-content/uploads/2009/04/20090416_firephp-277x300.png 277w" sizes="auto, (max-width: 422px) 100vw, 422px" /></p>
<p>Je ne code actuellement pas en PHP, mais je dois bientôt retravailler sur un projet avec ce langage, je pourrai alors vous en dire un peu plus !</p>
<p>A noter qu&#8217;il existe d&#8217;autres moyens de débugguer, comme <a href="http://particletree.com/features/php-quick-profiler/">PHP Quick Profiler (en)</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kodono.info/wordpress/2009/04/16/debogage-javascript-et-php-dans-firebug-programmation/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
