package com.thoughtworks.go.plugin.infra.listeners;

import com.thoughtworks.go.CurrentGoCDVersion;
import com.thoughtworks.go.plugin.FileHelper;
import com.thoughtworks.go.plugin.infra.PluginLoader;
import com.thoughtworks.go.plugin.infra.monitor.BundleOrPluginFileDetails;
import com.thoughtworks.go.plugin.infra.plugininfo.*;
import com.thoughtworks.go.util.SystemEnvironment;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.osgi.framework.Bundle;

import java.io.File;
import java.io.IOException;
import java.util.List;

import static com.thoughtworks.go.util.SystemEnvironment.PLUGIN_ACTIVATOR_JAR_PATH;
import static com.thoughtworks.go.util.SystemEnvironment.PLUGIN_WORK_DIR;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;

class DefaultPluginJarChangeListenerTest {
    private static final String PLUGIN_JAR_FILE_NAME = "descriptor-aware-test-plugin.jar";
    private File pluginWorkDir;
    private File bundleDir;
    private DefaultPluginRegistry registry;
    private GoPluginOSGiManifestGenerator osgiManifestGenerator;
    private DefaultPluginJarChangeListener listener;
    private PluginLoader pluginLoader;
    private SystemEnvironment systemEnvironment;
    private GoPluginBundleDescriptorBuilder goPluginBundleDescriptorBuilder;
    private FileHelper temporaryFolder;

    @BeforeEach
    void setUp(@TempDir File rootDir) {
        temporaryFolder = new FileHelper(rootDir);
        bundleDir = temporaryFolder.newFolder("bundleDir");
        pluginWorkDir = temporaryFolder.newFolder("pluginDir");

        registry = mock(DefaultPluginRegistry.class);
        osgiManifestGenerator = mock(GoPluginOSGiManifest.DefaultGoPluginOSGiManifestCreator.class);
        pluginLoader = mock(PluginLoader.class);
        goPluginBundleDescriptorBuilder = mock(GoPluginBundleDescriptorBuilder.class);
        systemEnvironment = mock(SystemEnvironment.class);
        when(systemEnvironment.get(PLUGIN_ACTIVATOR_JAR_PATH)).thenReturn("defaultFiles/go-plugin-activator.jar");
        when(systemEnvironment.get(PLUGIN_WORK_DIR)).thenReturn(bundleDir.getAbsolutePath());
        when(systemEnvironment.getOperatingSystemFamilyName()).thenReturn("Linux");

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
    }

    @Test
    void shouldCopyPluginToBundlePathAndInformRegistryAndUpdateTheOSGiManifestWhenAPluginIsAdded() throws Exception {
        String pluginId = "testplugin.descriptorValidator";
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        File expectedBundleDirectory = new File(bundleDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        String pluginJarFileLocation = pluginJarFile.getAbsolutePath();
        GoPluginBundleDescriptor descriptor = new GoPluginBundleDescriptor(GoPluginDescriptor.builder()
                .id(pluginId)
                .bundleLocation(expectedBundleDirectory)
                .pluginJarFileLocation(pluginJarFileLocation)
                .isBundledPlugin(true)
                .build());
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(descriptor);
        when(registry.getPluginByIdOrFileName(pluginId, PLUGIN_JAR_FILE_NAME)).thenReturn(null);
        doNothing().when(registry).loadPlugin(descriptor);

        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        assertThat(expectedBundleDirectory.exists()).isTrue();
        verify(registry).getPluginByIdOrFileName(pluginId, PLUGIN_JAR_FILE_NAME);
        verify(registry).loadPlugin(descriptor);
        verify(osgiManifestGenerator).updateManifestOf(descriptor);
        verify(pluginLoader).loadPlugin(descriptor);
        verifyNoMoreInteractions(osgiManifestGenerator);
        verifyNoMoreInteractions(registry);
        assertThat(new File(expectedBundleDirectory, "lib/go-plugin-activator.jar").exists()).isTrue();
    }

    @Test
    void shouldOverwriteAFileCalledGoPluginActivatorInLibWithOurOwnGoPluginActivatorEvenIfItExists() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        File expectedBundleDirectory = new File(bundleDir, PLUGIN_JAR_FILE_NAME);
        File activatorFileLocation = new File(expectedBundleDirectory, "lib/go-plugin-activator.jar");
        FileUtils.writeStringToFile(activatorFileLocation, "SOME-DATA", UTF_8);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        String pluginJarFileLocation = pluginJarFile.getAbsolutePath();
        GoPluginBundleDescriptor descriptor = new GoPluginBundleDescriptor(GoPluginDescriptor.builder()
                .id("testplugin.descriptorValidator")
                .bundleLocation(expectedBundleDirectory)
                .pluginJarFileLocation(pluginJarFileLocation)
                .isBundledPlugin(true)
                .build());
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(descriptor);
        doNothing().when(registry).loadPlugin(descriptor);

        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        assertThat(new File(expectedBundleDirectory, "lib/go-plugin-activator.jar").exists()).isTrue();
        assertThat(FileUtils.readFileToString(activatorFileLocation, UTF_8)).isNotEqualTo("SOME-DATA");
    }

    @Test
    void shouldCopyPluginToBundlePathAndInformRegistryAndUpdateTheOSGiManifestWhenAPluginIsUpdated() throws IOException {
        DefaultPluginJarChangeListener spy = spy(listener);
        String pluginId = "plugin-id";
        File oldFile = temporaryFolder.newFile("jar-name-1.0.0.jar");
        File newBundleJarFile = temporaryFolder.newFile("jar-name-2.0.0.jar");

        BundleOrPluginFileDetails oldBundleOrPluginJarFile = new BundleOrPluginFileDetails(oldFile, true, pluginWorkDir);
        BundleOrPluginFileDetails newBundleOrPluginJarFile = new BundleOrPluginFileDetails(newBundleJarFile, true, pluginWorkDir);

        GoPluginDescriptor oldDescriptor = GoPluginDescriptor.builder()
                .id(pluginId)
                .bundleLocation(oldBundleOrPluginJarFile.extractionLocation())
                .isBundledPlugin(true)
                .build();
        GoPluginBundleDescriptor oldBundleDescriptor = new GoPluginBundleDescriptor(oldDescriptor);

        GoPluginDescriptor newDescriptor = GoPluginDescriptor.builder()
                .id(pluginId)
                .bundleLocation(newBundleOrPluginJarFile.extractionLocation())
                .isBundledPlugin(true)
                .build();
        GoPluginBundleDescriptor newBundleDescriptor = new GoPluginBundleDescriptor(newDescriptor);

        doNothing().when(spy).explodePluginJarToBundleDir(newBundleJarFile, newBundleOrPluginJarFile.extractionLocation());
        doNothing().when(spy).installActivatorJarToBundleDir(newBundleJarFile);

        when(goPluginBundleDescriptorBuilder.build(newBundleOrPluginJarFile)).thenReturn(newBundleDescriptor);
        when(registry.getPluginByIdOrFileName(pluginId, oldFile.getName())).thenReturn(oldDescriptor);
        when(registry.unloadPlugin(newBundleDescriptor)).thenReturn(oldBundleDescriptor);

        spy.pluginJarUpdated(newBundleOrPluginJarFile);

        assertThat(oldBundleOrPluginJarFile.extractionLocation().exists()).isFalse();
        verify(registry, atLeastOnce()).getPluginByIdOrFileName(pluginId, newBundleJarFile.getName());
        verify(registry).unloadPlugin(newBundleDescriptor);
        verify(registry).loadPlugin(newBundleDescriptor);
        verify(osgiManifestGenerator).updateManifestOf(newBundleDescriptor);
        verify(pluginLoader).unloadPlugin(oldBundleDescriptor);
        verify(pluginLoader).loadPlugin(newBundleDescriptor);
        verifyNoMoreInteractions(osgiManifestGenerator);
        verifyNoMoreInteractions(registry);
    }

    @Test
    void shouldRemovePluginFromBundlePathAndInformRegistryWhenAPluginIsRemoved() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        File removedBundleDirectory = new File(bundleDir, PLUGIN_JAR_FILE_NAME);

        String pluginJarFileLocation = pluginJarFile.getAbsolutePath();
        final GoPluginDescriptor descriptorOfThePluginWhichWillBeRemoved = GoPluginDescriptor.builder()
                .id("testplugin.descriptorValidator")
                .bundleLocation(removedBundleDirectory)
                .pluginJarFileLocation(pluginJarFileLocation)
                .isBundledPlugin(true)
                .build();
        GoPluginBundleDescriptor descriptorOfThePluginBundleWhichWillBeRemoved = new GoPluginBundleDescriptor(descriptorOfThePluginWhichWillBeRemoved);

        when(registry.getPluginByIdOrFileName(null, descriptorOfThePluginWhichWillBeRemoved.fileName())).thenReturn(descriptorOfThePluginWhichWillBeRemoved);
        when(registry.unloadPlugin(descriptorOfThePluginBundleWhichWillBeRemoved)).thenReturn(descriptorOfThePluginBundleWhichWillBeRemoved);

        copyPluginToTheDirectory(bundleDir, PLUGIN_JAR_FILE_NAME);

        listener.pluginJarRemoved(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry).unloadPlugin(descriptorOfThePluginBundleWhichWillBeRemoved);
        verify(pluginLoader).unloadPlugin(descriptorOfThePluginBundleWhichWillBeRemoved);
        assertThat(removedBundleDirectory.exists()).isFalse();
    }

    @Test
    void shouldNotTryAndUpdateManifestOfAnAddedInvalidPlugin() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        File expectedBundleDirectory = new File(bundleDir, PLUGIN_JAR_FILE_NAME);

        String pluginJarFileLocation = pluginJarFile.getAbsolutePath();
        GoPluginBundleDescriptor descriptorForInvalidPlugin = new GoPluginBundleDescriptor(
                GoPluginDescriptor.builder()
                        .id("testplugin.descriptorValidator")
                        .bundleLocation(expectedBundleDirectory)
                        .pluginJarFileLocation(pluginJarFileLocation)
                        .pluginJarFileLocation(pluginJarFileLocation)
                        .isBundledPlugin(true)
                        .build())
                .markAsInvalid(singletonList("For a test"), null);

        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(descriptorForInvalidPlugin);
        doNothing().when(registry).loadPlugin(descriptorForInvalidPlugin);

        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        assertThat(expectedBundleDirectory.exists()).isTrue();
        verify(registry).loadPlugin(descriptorForInvalidPlugin);
        verifyNoMoreInteractions(osgiManifestGenerator);
    }

    @Test
    void shouldNotTryAndUpdateManifestOfAnUpdatedInvalidPlugin() throws Exception {
        DefaultPluginJarChangeListener spy = spy(listener);
        String pluginId = "plugin-id";
        File pluginFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        File expectedBundleDirectoryForInvalidPlugin = new File(bundleDir, PLUGIN_JAR_FILE_NAME);
        File bundleDirectoryForOldPlugin = new File(bundleDir, "descriptor-aware-test-plugin-old.jar");
        FileUtils.forceMkdir(bundleDirectoryForOldPlugin);

        String pluginJarFileLocation = pluginFile.getAbsolutePath();
        GoPluginBundleDescriptor descriptorForInvalidPlugin = new GoPluginBundleDescriptor(GoPluginDescriptor.builder()
                .id("testplugin.descriptorValidator")
                .bundleLocation(expectedBundleDirectoryForInvalidPlugin)
                .pluginJarFileLocation(pluginJarFileLocation)
                .pluginJarFileLocation(pluginJarFileLocation)
                .isBundledPlugin(true)
                .build())
                .markAsInvalid(singletonList("For a test"), null);

        Bundle oldBundle = mock(Bundle.class);
        final GoPluginDescriptor oldPluginDescriptor = GoPluginDescriptor.builder()
                .id("some.old.id")
                .bundleLocation(bundleDirectoryForOldPlugin)
                .pluginJarFileLocation("some/path/to/plugin.jar")
                .isBundledPlugin(true)
                .build();
        GoPluginBundleDescriptor oldBundleDescriptor = new GoPluginBundleDescriptor(oldPluginDescriptor).setBundle(oldBundle);

        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginFile, true, pluginWorkDir))).thenReturn(descriptorForInvalidPlugin);
        when(registry.getPlugin(pluginId)).thenReturn(oldPluginDescriptor);
        when(registry.unloadPlugin(descriptorForInvalidPlugin)).thenReturn(oldBundleDescriptor);
        doNothing().when(registry).loadPlugin(descriptorForInvalidPlugin);

        spy.pluginJarUpdated(new BundleOrPluginFileDetails(pluginFile, true, pluginWorkDir));

        assertThat(expectedBundleDirectoryForInvalidPlugin.exists()).isTrue();
        assertThat(bundleDirectoryForOldPlugin.exists()).isFalse();
        verify(registry).unloadPlugin(descriptorForInvalidPlugin);
        verify(pluginLoader).unloadPlugin(oldBundleDescriptor);
        verify(registry).loadPlugin(descriptorForInvalidPlugin);
        verifyNoMoreInteractions(osgiManifestGenerator);
        verifyNoMoreInteractions(pluginLoader);
    }

    @Test
    void shouldFailToLoadAPluginWhenActivatorJarIsNotAvailable() throws Exception {
        systemEnvironment = mock(SystemEnvironment.class);
        when(systemEnvironment.get(PLUGIN_ACTIVATOR_JAR_PATH)).thenReturn("some-path-which-does-not-exist.jar");

        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        File bundleDirectory = new File(bundleDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        String pluginJarFileLocation = pluginJarFile.getAbsolutePath();
        GoPluginDescriptor descriptor = GoPluginDescriptor.builder()
                .id("some.old.id")
                .bundleLocation(bundleDirectory)
                .pluginJarFileLocation(pluginJarFileLocation)
                .isBundledPlugin(true)
                .build();
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(new GoPluginBundleDescriptor(descriptor));

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        assertThatCode(() -> listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir)))
                .isInstanceOf(RuntimeException.class);
    }

    @Test
    void shouldNotReplaceBundledPluginWhenExternalPluginIsAdded() {
        String pluginId = "external";
        String pluginJarFileName = "plugin-file-name";
        File pluginJarFile = mock(File.class);
        when(pluginJarFile.getName()).thenReturn(pluginJarFileName);

        GoPluginBundleDescriptor externalPluginDescriptor = new GoPluginBundleDescriptor(getPluginDescriptor(pluginId, "1.0", pluginJarFileName, pluginJarFile, false, null));
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir))).thenReturn(externalPluginDescriptor);

        GoPluginDescriptor bundledPluginDescriptor = getPluginDescriptor("bundled", "1.0", "1.0", null, true, null);
        when(registry.getPluginByIdOrFileName(pluginId, pluginJarFileName)).thenReturn(bundledPluginDescriptor);

        DefaultPluginJarChangeListener spy = spy(listener);
        try {
            listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir));
            fail("should have failed as external plugin cannot replace bundled plugin");
        } catch (RuntimeException e) {
            assertThat(e.getMessage()).isEqualTo("Found bundled plugin with ID: [bundled], external plugin could not be loaded");
        }
        verify(spy, never()).explodePluginJarToBundleDir(pluginJarFile, externalPluginDescriptor.bundleLocation());
    }

    private GoPluginDescriptor getPluginDescriptor(String pluginId,
                                                   String version,
                                                   String pluginJarLocation,
                                                   File bundleLocation,
                                                   boolean isBundledPlugin,
                                                   String targetGoVersion,
                                                   String... operatingSystems) {
        return GoPluginDescriptor.builder()
                .id(pluginId)
                .version("1")
                .pluginJarFileLocation(pluginJarLocation)
                .bundleLocation(bundleLocation)
                .isBundledPlugin(isBundledPlugin)
                .about(GoPluginDescriptor.About.builder()
                        .version(version)
                        .targetGoVersion(targetGoVersion)
                        .targetOperatingSystems(List.of(operatingSystems))
                        .build())
                .build();
    }

    @Test
    void shouldFailIfAtleastOnePluginFromExternalPluginBundleTriesToReplaceGoCDInternalBundledPlugins_WhenAdding() {
        final String filename = "plugin-file-name.jar";
        File newPluginJarFile = new File("/path/to/" + filename);
        final File bundleLocation = new File("/some/path/" + filename);

        final GoPluginDescriptor newPluginDescriptor1 = getPluginDescriptor("external.1", "1.0", newPluginJarFile.getAbsolutePath(), bundleLocation, false, null);
        final GoPluginDescriptor newPluginDescriptor2 = getPluginDescriptor("bundled", "1.0", newPluginJarFile.getAbsolutePath(), bundleLocation, false, null);
        GoPluginBundleDescriptor newExternalPluginBundleDescriptor = new GoPluginBundleDescriptor(newPluginDescriptor1, newPluginDescriptor2);
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(newPluginJarFile, false, pluginWorkDir))).thenReturn(newExternalPluginBundleDescriptor);

        final GoPluginDescriptor existingPluginDescriptor1 = getPluginDescriptor("bundled", "1.0", "/some/path/file.jar", new File("/some/file.jar"), true, null);
        when(registry.getPluginByIdOrFileName("external.1", filename)).thenReturn(null);
        when(registry.getPluginByIdOrFileName("bundled", filename)).thenReturn(existingPluginDescriptor1);

        DefaultPluginJarChangeListener spy = spy(listener);
        try {
            spy.pluginJarAdded(new BundleOrPluginFileDetails(newPluginJarFile, false, pluginWorkDir));
            fail("should have failed as external plugin cannot replace bundled plugin");
        } catch (RuntimeException e) {
            assertThat(e.getMessage()).isEqualTo("Found bundled plugin with ID: [bundled], external plugin could not be loaded");
        }
        verify(spy, never()).explodePluginJarToBundleDir(newPluginJarFile, newExternalPluginBundleDescriptor.bundleLocation());
    }

    @Test
    void shouldNotUpdatePluginWhenThereIsExistingPluginWithSameId() {
        String pluginId = "plugin-id";
        String pluginJarFileName = "plugin-file-name";
        File pluginJarFile = mock(File.class);
        when(pluginJarFile.getName()).thenReturn(pluginJarFileName);

        final GoPluginDescriptor pluginDescriptor1 = getPluginDescriptor("some-new-plugin-id", "1.0", pluginJarFileName, pluginJarFile, true, null);
        final GoPluginDescriptor pluginDescriptor2 = getPluginDescriptor(pluginId, "1.0", pluginJarFileName, pluginJarFile, true, null);
        GoPluginBundleDescriptor newPluginDescriptor = new GoPluginBundleDescriptor(pluginDescriptor1, pluginDescriptor2);
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir))).thenReturn(newPluginDescriptor);

        final GoPluginDescriptor oldPluginDescriptor = getPluginDescriptor(pluginId, "1.0", "location-old", new File("location-old"), true, null);
        when(registry.getPluginByIdOrFileName(pluginId, pluginJarFileName)).thenReturn(oldPluginDescriptor);

        DefaultPluginJarChangeListener spy = spy(listener);
        try {
            spy.pluginJarUpdated(new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir));
            fail("should have failed as external plugin cannot replace bundled plugin");
        } catch (RuntimeException e) {
            assertThat(e.getMessage()).isEqualTo("Found another plugin with ID: plugin-id");
        }
        verify(spy, never()).explodePluginJarToBundleDir(pluginJarFile, newPluginDescriptor.bundleLocation());
    }

    @Test
    void shouldNotUpdateBundledPluginWithExternalPlugin() {
        String pluginId = "plugin-id";
        String pluginJarFileName = "plugin-file-name.jar";
        File pluginJarFile = new File("/some/path/" + pluginJarFileName);
        BundleOrPluginFileDetails bundleOrPluginJarFile = new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir);

        GoPluginBundleDescriptor newPluginDescriptor = new GoPluginBundleDescriptor(getPluginDescriptor(pluginId, "1.0", pluginJarFileName, bundleOrPluginJarFile.extractionLocation(), false, null));
        when(goPluginBundleDescriptorBuilder.build(bundleOrPluginJarFile)).thenReturn(newPluginDescriptor);

        GoPluginDescriptor oldPluginDescriptor = getPluginDescriptor(pluginId, "1.0", null, null, true, null);
        when(registry.getPluginByIdOrFileName(pluginId, pluginJarFileName)).thenReturn(oldPluginDescriptor);

        DefaultPluginJarChangeListener spy = spy(listener);
        try {
            spy.pluginJarUpdated(bundleOrPluginJarFile);
            fail("should have failed as external plugin cannot replace bundled plugin");
        } catch (RuntimeException e) {
            assertThat(e.getMessage()).isEqualTo("Found bundled plugin with ID: [plugin-id], external plugin could not be loaded");
        }
        verify(spy, never()).explodePluginJarToBundleDir(pluginJarFile, newPluginDescriptor.bundleLocation());
    }

    @Test
    void shouldFailIfAtleastOnePluginFromExternalPluginBundleTriesToReplaceGoCDInternalBundledPlugins_WhenUpdating() {
        final String filename = "plugin-file-name.jar";
        File updatedPluginJarLocation = new File("/path/to/" + filename);
        File bundleLocation = new File("/some/path/" + filename);

        final GoPluginDescriptor newPluginDescriptor1 = getPluginDescriptor("external.1", "1.0", updatedPluginJarLocation.getAbsolutePath(), bundleLocation, false, null);
        final GoPluginDescriptor newPluginDescriptor2 = getPluginDescriptor("bundled", "1.0", updatedPluginJarLocation.getAbsolutePath(), bundleLocation, false, null);
        GoPluginBundleDescriptor newExternalPluginBundleDescriptor = new GoPluginBundleDescriptor(newPluginDescriptor1, newPluginDescriptor2);
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(updatedPluginJarLocation, false, pluginWorkDir))).thenReturn(newExternalPluginBundleDescriptor);

        final GoPluginDescriptor existingPluginDescriptor1 = getPluginDescriptor("bundled", "1.0", updatedPluginJarLocation.getAbsolutePath(), bundleLocation, true, null);
        when(registry.getPluginByIdOrFileName("external.1", filename)).thenReturn(null);
        when(registry.getPluginByIdOrFileName("bundled", filename)).thenReturn(existingPluginDescriptor1);

        DefaultPluginJarChangeListener spy = spy(listener);
        try {
            spy.pluginJarUpdated(new BundleOrPluginFileDetails(updatedPluginJarLocation, false, pluginWorkDir));
            fail("should have failed as external plugin cannot replace bundled plugin");
        } catch (RuntimeException e) {
            assertThat(e.getMessage()).isEqualTo("Found bundled plugin with ID: [bundled], external plugin could not be loaded");
        }
        verify(spy, never()).explodePluginJarToBundleDir(updatedPluginJarLocation, newExternalPluginBundleDescriptor.bundleLocation());
    }

    @Test
    void shouldNotRemoveBundledPluginExternalPluginJarRemovedWithSameId() {
        String pluginId = "plugin-id";
        String pluginJarFileName = "plugin-file-name";
        File pluginJarFile = mock(File.class);
        when(pluginJarFile.getName()).thenReturn(pluginJarFileName);
        when(pluginJarFile.getAbsoluteFile()).thenReturn(new File(pluginJarFileName));

        final GoPluginDescriptor oldPluginDescriptor = getPluginDescriptor(pluginId, "1.0", null, null, true, null);
        GoPluginBundleDescriptor oldPluginBundleDescriptor = new GoPluginBundleDescriptor(oldPluginDescriptor);
        when(registry.getPluginByIdOrFileName(null, pluginJarFileName)).thenReturn(oldPluginDescriptor);

        DefaultPluginJarChangeListener spy = spy(listener);
        spy.pluginJarRemoved(new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir));
        verify(registry, never()).unloadPlugin(oldPluginBundleDescriptor);
        verify(pluginLoader, never()).unloadPlugin(oldPluginBundleDescriptor);
    }

    @Test
    void shouldNotLoadAPluginWhenCurrentOSIsNotAmongTheListOfTargetOSesAsDeclaredByThePluginInItsXML() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        final GoPluginDescriptor pluginDescriptor1 = getPluginDescriptor("some.old.id.1", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, null, "Windows");
        final GoPluginDescriptor pluginDescriptor2 = getPluginDescriptor("some.old.id.2", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, null, "Linux", "Mac OS X");
        GoPluginBundleDescriptor bundleDescriptor = new GoPluginBundleDescriptor(pluginDescriptor1, pluginDescriptor2);

        when(systemEnvironment.getOperatingSystemFamilyName()).thenReturn("Windows");
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(bundleDescriptor);

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry, times(1)).loadPlugin(bundleDescriptor);
        verifyZeroInteractions(pluginLoader);

        assertThat(pluginDescriptor1.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor1.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incompatible with current operating system 'Windows'. Valid operating systems are: [Linux, Mac OS X].");

        assertThat(pluginDescriptor2.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor2.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incompatible with current operating system 'Windows'. Valid operating systems are: [Linux, Mac OS X].");
    }

    @Test
    void shouldNotLoadAPluginWhenCurrentOSIsNotAmongTheListOfTargetOSesAsDeclaredByThePluginInItsXMLForUpdatePath() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        String pluginID = "some.id";

        final GoPluginDescriptor pluginDescriptor1 = getPluginDescriptor("some.old.id.1", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, null, "Linux");
        final GoPluginDescriptor pluginDescriptor2 = getPluginDescriptor("some.old.id.2", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, null, "Windows", "Mac OS X");
        GoPluginBundleDescriptor newBundleDescriptor = new GoPluginBundleDescriptor(pluginDescriptor1, pluginDescriptor2);

        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, false, pluginWorkDir))).thenReturn(newBundleDescriptor);

        GoPluginBundleDescriptor oldPluginDescriptor = new GoPluginBundleDescriptor(getPluginDescriptor(pluginID, "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), true, null, "Linux", "Mac OS X"));
        when(systemEnvironment.getOperatingSystemFamilyName()).thenReturn("Linux");
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(newBundleDescriptor);
        when(registry.unloadPlugin(newBundleDescriptor)).thenReturn(oldPluginDescriptor);

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry, times(1)).loadPlugin(newBundleDescriptor);

        assertThat(pluginDescriptor1.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor1.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incompatible with current operating system 'Linux'. Valid operating systems are: [Windows, Mac OS X].");

        assertThat(pluginDescriptor2.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor2.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incompatible with current operating system 'Linux'. Valid operating systems are: [Windows, Mac OS X].");
    }

    @Test
    void shouldLoadAPluginWhenCurrentOSIsAmongTheListOfTargetOSesAsDeclaredByThePluginInItsXML() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        GoPluginBundleDescriptor descriptor = new GoPluginBundleDescriptor(getPluginDescriptor("some.old.id", "1.0", pluginJarFile.getAbsolutePath(),
                new File(PLUGIN_JAR_FILE_NAME), false, null, "Windows", "Linux"));
        when(systemEnvironment.getOperatingSystemFamilyName()).thenReturn("Windows");
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(descriptor);

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry, times(1)).loadPlugin(descriptor);
        verify(pluginLoader, times(1)).loadPlugin(descriptor);
    }

    @Test
    void shouldLoadAPluginWhenAListOfTargetOSesIsNotDeclaredByThePluginInItsXML() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        GoPluginBundleDescriptor descriptor = new GoPluginBundleDescriptor(getPluginDescriptor("some.old.id", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, null));
        when(systemEnvironment.getOperatingSystemFamilyName()).thenReturn("Windows");
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(descriptor);

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry, times(1)).loadPlugin(descriptor);
        verify(pluginLoader, times(1)).loadPlugin(descriptor);
    }

    @Test
    void shouldNotLoadAPluginWhenTargetedGocdVersionIsGreaterThanCurrentGocdVersion() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        final GoPluginDescriptor pluginDescriptor1 = getPluginDescriptor("some.old.id.1", "1.0", pluginJarFile.getAbsolutePath(),
                new File(PLUGIN_JAR_FILE_NAME), false, "17.5.0", "Linux", "Mac OS X");
        final GoPluginDescriptor pluginDescriptor2 = getPluginDescriptor("some.old.id.2", "1.0", pluginJarFile.getAbsolutePath(),
                new File(PLUGIN_JAR_FILE_NAME), false, "9999.0.0", "Linux", "Mac OS X");
        GoPluginBundleDescriptor bundleDescriptor = new GoPluginBundleDescriptor(pluginDescriptor1, pluginDescriptor2);

        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(bundleDescriptor);

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry, times(1)).loadPlugin(bundleDescriptor);
        verifyZeroInteractions(pluginLoader);

        assertThat(pluginDescriptor1.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor1.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incompatible with GoCD version '" + CurrentGoCDVersion.getInstance().goVersion() + "'. Compatible version is: 9999.0.0.");

        assertThat(pluginDescriptor2.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor2.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incompatible with GoCD version '" + CurrentGoCDVersion.getInstance().goVersion() + "'. Compatible version is: 9999.0.0.");
    }

    @Test
    void shouldNotLoadAPluginWhenTargetedGocdVersionIsIncorrect() throws Exception {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        final GoPluginDescriptor pluginDescriptor1 = getPluginDescriptor("some.old.id.1", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, "17.5.0", "Linux", "Mac OS X");
        final GoPluginDescriptor pluginDescriptor2 = getPluginDescriptor("some.old.id.2", "1.0", pluginJarFile.getAbsolutePath(), new File(PLUGIN_JAR_FILE_NAME), false, "9999.0.0.1.2", "Linux", "Mac OS X");
        GoPluginBundleDescriptor bundleDescriptor = new GoPluginBundleDescriptor(pluginDescriptor1, pluginDescriptor2);

        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(bundleDescriptor);

        listener = new DefaultPluginJarChangeListener(registry, osgiManifestGenerator, pluginLoader, goPluginBundleDescriptorBuilder, systemEnvironment);
        listener.pluginJarAdded(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir));

        verify(registry, times(1)).loadPlugin(bundleDescriptor);
        verifyZeroInteractions(pluginLoader);

        assertThat(pluginDescriptor1.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor1.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incorrect target GoCD version (17.5.0 & 9999.0.0.1.2) specified.");

        assertThat(pluginDescriptor2.getStatus().getMessages().size()).isEqualTo(1);
        assertThat(pluginDescriptor2.getStatus().getMessages().get(0)).isEqualTo("Plugins with IDs ([some.old.id.1, some.old.id.2]) are not valid: Incorrect target GoCD version (17.5.0 & 9999.0.0.1.2) specified.");
    }

    @Test
    void shouldNotLoadAPluginWhenProvidedExtensionVersionByThePluginIsNotSupportedByCurrentGoCDVersion() throws IOException {
        File pluginJarFile = new File(pluginWorkDir, PLUGIN_JAR_FILE_NAME);

        copyPluginToTheDirectory(pluginWorkDir, PLUGIN_JAR_FILE_NAME);
        GoPluginDescriptor descriptor = getPluginDescriptor("some.old.id", "1.0", null,
                new File(PLUGIN_JAR_FILE_NAME), false, null, "Windows", "Linux");
        when(systemEnvironment.getOperatingSystemFamilyName()).thenReturn("Windows");
        when(goPluginBundleDescriptorBuilder.build(new BundleOrPluginFileDetails(pluginJarFile, true, pluginWorkDir))).thenReturn(new GoPluginBundleDescriptor(descriptor));
    }

    private void copyPluginToTheDirectory(File destinationDir, String destinationFilenameOfPlugin) throws IOException {
        FileUtils.copyFile(pathOfFileInDefaultFiles("descriptor-aware-test-plugin.jar"), new File(destinationDir, destinationFilenameOfPlugin));
    }

    private File pathOfFileInDefaultFiles(String filePath) {
        return new File(getClass().getClassLoader().getResource("defaultFiles/" + filePath).getFile());
    }

}

{'content_hash': '8228b98a5bfc269fde0d7e1c636b7093', 'timestamp': '', 'source': 'github', 'line_count': 599, 'max_line_length': 269, 'avg_line_length': 62.92320534223706, 'alnum_prop': 0.7401767000079594, 'repo_name': 'marques-work/gocd', 'id': '9c89adcb29683b1b418015e720f37c74112e96c2', 'size': '38292', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'plugin-infra/go-plugin-infra/src/test/java/com/thoughtworks/go/plugin/infra/listeners/DefaultPluginJarChangeListenerTest.java', 'mode': '33188', 'license': 'apache-2.0', 'language': [{'name': 'Batchfile', 'bytes': '466'}, {'name': 'CSS', 'bytes': '807605'}, {'name': 'FreeMarker', 'bytes': '9759'}, {'name': 'Groovy', 'bytes': '2317159'}, {'name': 'HTML', 'bytes': '641338'}, {'name': 'Java', 'bytes': '21014983'}, {'name': 'JavaScript', 'bytes': '2539248'}, {'name': 'NSIS', 'bytes': '23525'}, {'name': 'PowerShell', 'bytes': '691'}, {'name': 'Ruby', 'bytes': '1907011'}, {'name': 'Shell', 'bytes': '169586'}, {'name': 'TSQL', 'bytes': '200114'}, {'name': 'TypeScript', 'bytes': '3423163'}, {'name': 'XSLT', 'bytes': '203240'}]}


Татьяна Георгиевна Курьянова (Сорокина-Курьянова) (24 марта 1948 года) — советская и российская актриса. Заслуженная артистка РФ (1993).

В 1970 году окончила студию при Центральном детском театре (ныне — Российский академический Молодёжный Театр) и стала его актрисой.

Театр
  — «Оркестр» (Ж. Ануй). Режиссёр: Валерий Киселёв — М-м Ортанс
 2004 — «Волшебник Изумрудного города» Александра Волкова. Режиссёры: Алексей Блохин, Алексей Весёлкин — Бастинда

Радио
 «Клуб знаменитых капитанов» — Дик Сенд
 «В стране литературных героев» — школьник Гена
 «Дети капитана Гранта» — Роберт Грант
 «Эликсир Купрума Эса» — Родя Маршев
 "Вино из одуванчиков"

Кино
1989 — «Женщины, которым повезло» — Ирина Агишева (актриса-травести)
1987 — «Малыш» (фильм-спектакль) — Малыш

Актриса дубляжа
1996 — «Рождественское сокровище Михея»
1995 — «Кто первый?»
1994 — «Богатенький Ричи»
1993 — «Таинственный сад»
1993 — «Томминокеры» (ТВ)
1991 — «Капитан Крюк»
1988 — «Узники „Ямагири-Мару“»
1986 — «Приключения пингвинёнка Лоло»

Озвучивание мультфильмов
 1988 — Веселая карусель № 27. Кто первый?
 1988 — Узники «Ямагири-мару» — Пашка Гераскин
 1986—1987 — Приключения пингвинёнка Лоло
 1986 — Я жду тебя, кит!

Ссылки
Страница актрисы на сайте театра


Андре́ Жоне́ (; 17 мая 1911, Корне — 13 декабря 1988, Цюрих) — швейцарский флейтист и музыкальный педагог французского происхождения.

Учился в Париже у Марселя Муаза и Филиппа Гобера. После окончания Парижской консерватории в 1931 г. занимал пульт первой флейты в Лилльской опере, Винтертурском городском оркестре, Бернском симфоническом оркестре. В 1938—1978 гг. первая флейта цюрихского оркестра Тонхалле, одновременно преподавал в Цюрихской консерватории. В 1939 г. был в числе первых лауреатов Международного конкурса исполнителей в Женеве. С 1973 г. также приглашённый профессор Фрайбургской Высшей школы музыки. Среди учеников Жоне — Орель Николе, Петер Лукас Граф, Эммануэль Паю и другие заметные музыканты. Играл также в составе Цюрихского духового квинтета, других камерных составов, в том числе специализировавшихся на барочной музыке.

Примечания

Флейтисты Швейцарии
Академические музыканты Швейцарии
Флейтисты по алфавиту
Музыкальные педагоги Швейцарии


<?php

namespace ZFTest\Rest;

use PHPUnit_Framework_TestCase as TestCase;
use Zend\Http\Request as HttpRequest;
use Zend\InputFilter\InputFilter;
use Zend\Mvc\Router\RouteMatch;
use Zend\Stdlib\Parameters;
use ZF\MvcAuth\Identity\GuestIdentity;
use ZF\Rest\ResourceEvent;

class ResourceEventTest extends TestCase
{
    public function setUp()
    {
        $this->matches = new RouteMatch(array(
            'foo' => 'bar',
            'baz' => 'inga',
        ));
        $this->query = new Parameters(array(
            'foo' => 'bar',
            'baz' => 'inga',
        ));

        $this->event = new ResourceEvent();
    }

    public function testRouteMatchIsNullByDefault()
    {
        $this->assertNull($this->event->getRouteMatch());
    }

    public function testQueryParamsAreNullByDefault()
    {
        $this->assertNull($this->event->getQueryParams());
    }

    public function testRouteMatchIsMutable()
    {
        $this->event->setRouteMatch($this->matches);
        $this->assertSame($this->matches, $this->event->getRouteMatch());
        return $this->event;
    }

    public function testQueryParamsAreMutable()
    {
        $this->event->setQueryParams($this->query);
        $this->assertSame($this->query, $this->event->getQueryParams());
        return $this->event;
    }

    public function testRequestIsNullByDefault()
    {
        $this->assertNull($this->event->getRequest());
    }

    public function testRequestIsMutable()
    {
        $request = new HttpRequest();
        $this->event->setRequest($request);
        $this->assertSame($request, $this->event->getRequest());
        return $this->event;
    }

    /**
     * @depends testRouteMatchIsMutable
     */
    public function testRouteMatchIsNullable(ResourceEvent $event)
    {
        $event->setRouteMatch(null);
        $this->assertNull($event->getRouteMatch());
    }

    /**
     * @depends testQueryParamsAreMutable
     */
    public function testQueryParamsAreNullable(ResourceEvent $event)
    {
        $event->setQueryParams(null);
        $this->assertNull($event->getQueryParams());
    }

    /**
     * @depends testRequestIsMutable
     */
    public function testRequestIsNullable(ResourceEvent $event)
    {
        $event->setRequest(null);
        $this->assertNull($event->getRequest());
    }

    public function testCanInjectRequestViaSetParams()
    {
        $request = new HttpRequest();
        $this->event->setParams(array('request' => $request));
        $this->assertSame($request, $this->event->getRequest());
    }

    public function testCanFetchIndividualRouteParameter()
    {
        $this->event->setRouteMatch($this->matches);
        $this->assertEquals('bar', $this->event->getRouteParam('foo'));
        $this->assertEquals('inga', $this->event->getRouteParam('baz'));
    }

    public function testCanFetchIndividualQueryParameter()
    {
        $this->event->setQueryParams($this->query);
        $this->assertEquals('bar', $this->event->getQueryParam('foo'));
        $this->assertEquals('inga', $this->event->getQueryParam('baz'));
    }

    public function testReturnsDefaultParameterWhenPullingUnknownRouteParameter()
    {
        $this->assertNull($this->event->getRouteParam('foo'));
        $this->assertEquals('bat', $this->event->getRouteParam('baz', 'bat'));
    }

    public function testReturnsDefaultParameterWhenPullingUnknownQueryParameter()
    {
        $this->assertNull($this->event->getQueryParam('foo'));
        $this->assertEquals('bat', $this->event->getQueryParam('baz', 'bat'));
    }

    public function testInputFilterIsUndefinedByDefault()
    {
        $this->assertNull($this->event->getInputFilter());
    }

    /**
     * @depends testInputFilterIsUndefinedByDefault
     */
    public function testCanComposeInputFilter()
    {
        $inputFilter = new InputFilter();
        $this->event->setInputFilter($inputFilter);
        $this->assertSame($inputFilter, $this->event->getInputFilter());
    }

    /**
     * @depends testCanComposeInputFilter
     */
    public function testCanNullifyInputFilter()
    {
        $this->event->setInputFilter(null);
        $this->assertNull($this->event->getInputFilter());
    }

    public function testIdentityIsUndefinedByDefault()
    {
        $this->assertNull($this->event->getIdentity());
    }

    /**
     * @depends testIdentityIsUndefinedByDefault
     */
    public function testCanComposeIdentity()
    {
        $identity = new GuestIdentity();
        $this->event->setIdentity($identity);
        $this->assertSame($identity, $this->event->getIdentity());
    }

    /**
     * @depends testCanComposeIdentity
     */
    public function testCanNullifyIdentity()
    {
        $this->event->setIdentity(null);
        $this->assertNull($this->event->getIdentity());
    }
}

{'content_hash': '57c599ca684af99478622a283893fb6f', 'timestamp': '', 'source': 'github', 'line_count': 174, 'max_line_length': 81, 'avg_line_length': 27.804597701149426, 'alnum_prop': 0.6242248863166597, 'repo_name': 'nocvp/zf-rest', 'id': '3d3a6c0814ca8925fcb6a3fb7b864b16d86184fa', 'size': '4998', 'binary': False, 'copies': '5', 'ref': 'refs/heads/master', 'path': 'test/ResourceEventTest.php', 'mode': '33188', 'license': 'bsd-3-clause', 'language': [{'name': 'PHP', 'bytes': '211249'}]}


Sdr. Bjert Kirke i Sønder Bjert syd for Kolding er bygget i slutningen af 1100 tallet som afløser for en ældre trækirke. Den er bygget af kløvede kampesten og har oprindelig ikke haft tårn og tilbygninger. Kirken er tækket med et blytag, som er fornyet flere gange, sidst i år 2000.

Under Svenskekrigene stjal de svenske soldater bly fra kirketaget som de omstøbte til kugler. I 1660, måtte blytækkeren arbejde på taget i seks uger på at reparere taget.

Klokketårnet med de fire hvide gavlspidser, opført mellem 1450-1500, er bygget af munkesten og tækket med skifer. I 1862 blev syd- og vestsiden skalmuret og vestindgangen blev åbnet i 1856.
Tårnet har en lille klokke fra 1784 og to større fra 1842. Ved gudstjenester ringes der med de to store, og ved særlige lejligheder med alle tre. Tårnurene er fra 1898 og 1946.

Skibet har plads til ca. 375 mennesker. Sidst i 1700 tallet fik rummet de store vinduer og træloftet blev erstattet af det nuværende overpudsede loft med stjernerne.

Krucifikset på kirkens sydvæg stammer fra midten af 1200 tallet og har oprindelig hængt over korbuen. Selve korset er udskiftet i 1941. I det udhulede bryst blev der sidst i 1800-tallet fundet rester af en relikvie. De er nu på Nationalmuseet.

Koret er den ældste del af kirken, men er ombygget flere gange. Oprindelig havde koret et fladt træloft ligesom skibet. Omkring år 1400 blev der indbygget nogle fine hvælv og de gamle små nordvinduer muret til. I 1881 blev den gamle apsis fjernet og muret op igen i fine tilhuggede granitkvadre. Før 1881 var apsis hvidkalket som den øvrige kirke. Under buerne i koret er der to ansigter indmuret. Mod syd er det Moses, her som andre steder fremstillet med horn. På nordsiden af koret er et cirkelrundt kalkmalet kors som formodentlig er et tegn på indvielsen af koret, muligvis efter at hvælvingerne var bygget ind.

Altertavleen fra 1624 er skåret af Hans Dreyer. I 1915 blev altertavlen ført tilbage til de oprindelige stærke, glade farver. Billedet af den korsfæstede Kristus med Maria og Johannes er malet i 1917 af Niels Skovgaard (1858-1938). Bag altertavlen står tavlerne til ”børnealtertavlen”, fem billeder, malet af en Sønder Bjerts skoles 6. klasse i 1983 til brug ved børne- og familiegudstjenester. De forestiller jul, påske og pinse.

Døbefonten fra omkring 1650 er formodentlig skåret af en Hans Nielsen fra Middelfart. Fonten er syvkantet og himlen 14-kantet, og kanten er malet med blå og røde bølgelinier for at symbolisere, at Kristi døber både med vand og ild = Helligånd. Inde i fonten er der tre dåbsfade, en malmgryde fra ca. 1400 med støbt lyseholder, en kobberkedel af senere dato og et sølvfad skænket i 1965 af menigheden..

Orgelet er indviet 12. december 2004 og er bygget af P. G. Andersen og Bruhn fra Årslev. Orgelet er på 20 stemmer på to manualer og pedal. Det er tegnet af arkitektfirmaet Borch og Svenning, Horsens.

kalkmaleriet ved siden af døbefonten er kirkens eneste, er en fremstilling af Jesu bøn i Getsemane have. Det er ikke ret godt bevaret. Men det har sikkert været et led i en længere række billeder.

Kirkeskibene er tremasteren Aron og barken Jonas Risting. Aron er skåret 1928-29 af Lars Poulsen, Odense og skænket af Baltimores sømandskirke i 1976. Jonas Risting er en nøjagtig model af barken Jonas Risting er bygget om bord på skibet 1876-77 af den da 20-årige matros Carl Johs. Nielsen. Det blev skænket til kirken, da Nielsens søn også var gift med en pige fra Sdr. Bjert.

Eksterne kilder og henvisninger
 Sdr. Bjert Kirke (kilde)

 Sønder Bjert Kirke hos KortTilKirken.dk

Kirker i Kolding Kommune
Kirker i Haderslev Stift
Kirker i Vejle Amt

{'title': 'Sønder Bjert Kirke', 'url': 'https://da.wikipedia.org/wiki/S%C3%B8nder%20Bjert%20Kirke', 'language': 'da', 'timestamp': '20230320'}


Q: Convert Tensorflow frozen .pb model to keras model I have tensorflow .pb frozen model and i would like to retrain this model with new data and in order to do that i would like to convert the tf .pb frozen model to a keras model.
i was able to visualise layers and weight values and i wana know if it is possible to convert this .pb model to a keras model in order to retain it or if there is another solution in order to retrain a .pb frozen model ?
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

detection_graph = tf.Graph()
with detection_graph.as_default():
  od_graph_def = tf.GraphDef()
  with tf.gfile.GFile('weight/saved_model.pb', 'rb') as fid:
      serialized_graph = fid.read()
      od_graph_def.ParseFromString(serialized_graph)
      tf.import_graph_def(od_graph_def, name='')
conf = tf.ConfigProto()
session = tf.Session(graph=detection_graph, config=conf)

#layers name
layers = [op.name for op in detection_graph.get_operations()]
for layer in layers:
      print(layer)

Const
ToFloat
Const_1
ToFloat_1
Const_2
ToFloat_2
image_tensor
ToFloat_3
Preprocessor/map/Shape
Preprocessor/map/strided_slice/stack
Preprocessor/map/strided_slice/stack_1
Preprocessor/map/strided_slice/stack_2
Preprocessor/map/strided_slice
Preprocessor/map/TensorArray
Preprocessor/map/TensorArrayUnstack/Shape
Preprocessor/map/TensorArrayUnstack/strided_slice/stack
Preprocessor/map/TensorArrayUnstack/strided_slice/stack_1
Preprocessor/map/TensorArrayUnstack/strided_slice/stack_2
Preprocessor/map/TensorArrayUnstack/strided_slice
Preprocessor/map/TensorArrayUnstack/range/start
Preprocessor/map/TensorArrayUnstack/range/delta
Preprocessor/map/TensorArrayUnstack/range
Preprocessor/map/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3
Preprocessor/map/Const
Preprocessor/map/TensorArray_1
Preprocessor/map/TensorArray_2
Preprocessor/map/while/Enter
Preprocessor/map/while/Enter_1
Preprocessor/map/while/Enter_2
Preprocessor/map/while/Merge
Preprocessor/map/while/Merge_1
Preprocessor/map/while/Merge_2
Preprocessor/map/while/Less/Enter
Preprocessor/map/while/Less
Preprocessor/map/while/LoopCond
Preprocessor/map/while/Switch
Preprocessor/map/while/Switch_1
Preprocessor/map/while/Switch_2
Preprocessor/map/while/Identity
Preprocessor/map/while/Identity_1
Preprocessor/map/while/Identity_2
Preprocessor/map/while/TensorArrayReadV3/Enter
Preprocessor/map/while/TensorArrayReadV3/Enter_1
Preprocessor/map/while/TensorArrayReadV3
Preprocessor/map/while/ResizeImage/stack
Preprocessor/map/while/ResizeImage/resize_images/ExpandDims/dim
Preprocessor/map/while/ResizeImage/resize_images/ExpandDims
Preprocessor/map/while/ResizeImage/resize_images/ResizeBilinear
Preprocessor/map/while/ResizeImage/resize_images/Squeeze
Preprocessor/map/while/ResizeImage/stack_1
Preprocessor/map/while/TensorArrayWrite/TensorArrayWriteV3/Enter
Preprocessor/map/while/TensorArrayWrite/TensorArrayWriteV3
Preprocessor/map/while/TensorArrayWrite_1/TensorArrayWriteV3/Enter
Preprocessor/map/while/TensorArrayWrite_1/TensorArrayWriteV3
Preprocessor/map/while/add/y
Preprocessor/map/while/add
Preprocessor/map/while/NextIteration
Preprocessor/map/while/NextIteration_1
Preprocessor/map/while/NextIteration_2
Preprocessor/map/while/Exit_1
Preprocessor/map/while/Exit_2
Preprocessor/map/TensorArrayStack/TensorArraySizeV3
Preprocessor/map/TensorArrayStack/range/start
Preprocessor/map/TensorArrayStack/range/delta
Preprocessor/map/TensorArrayStack/range
Preprocessor/map/TensorArrayStack/TensorArrayGatherV3
Preprocessor/map/TensorArrayStack_1/TensorArraySizeV3
Preprocessor/map/TensorArrayStack_1/range/start
Preprocessor/map/TensorArrayStack_1/range/delta
Preprocessor/map/TensorArrayStack_1/range
Preprocessor/map/TensorArrayStack_1/TensorArrayGatherV3
Preprocessor/sub/y
Preprocessor/sub
Shape
FirstStageFeatureExtractor/Shape
FirstStageFeatureExtractor/strided_slice/stack
FirstStageFeatureExtractor/strided_slice/stack_1
FirstStageFeatureExtractor/strided_slice/stack_2
FirstStageFeatureExtractor/strided_slice
FirstStageFeatureExtractor/GreaterEqual/y
FirstStageFeatureExtractor/GreaterEqual
FirstStageFeatureExtractor/Shape_1
FirstStageFeatureExtractor/strided_slice_1/stack
FirstStageFeatureExtractor/strided_slice_1/stack_1
FirstStageFeatureExtractor/strided_slice_1/stack_2
FirstStageFeatureExtractor/strided_slice_1
FirstStageFeatureExtractor/GreaterEqual_1/y
FirstStageFeatureExtractor/GreaterEqual_1
FirstStageFeatureExtractor/LogicalAnd
FirstStageFeatureExtractor/Assert/Assert/data_0
FirstStageFeatureExtractor/Assert/Assert
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/Pad/paddings
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/Pad
FirstStageFeatureExtractor/resnet_v1_101/conv1/weights
FirstStageFeatureExtractor/resnet_v1_101/conv1/weights/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/conv1/Conv2D
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/gamma
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/gamma/read
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/beta
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/beta/read
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/moving_mean
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/moving_mean/read
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/moving_variance
FirstStageFeatureExtractor/resnet_v1_101/conv1/BatchNorm/moving_variance/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/conv1/BatchNorm/FusedBatchNorm
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/conv1/Relu
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/pool1/MaxPool
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/weights
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/weights/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/Conv2D
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/gamma
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/gamma/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/beta
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/beta/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/moving_mean
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/moving_mean/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/moving_variance
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/moving_variance/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/shortcut/BatchNorm/FusedBatchNorm
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/weights
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/weights/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/Conv2D
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/gamma
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/gamma/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/beta
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/beta/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/moving_mean
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/moving_mean/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/moving_variance
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/moving_variance/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/BatchNorm/FusedBatchNorm
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv1/Relu
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/weights
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/weights/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/Conv2D
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/gamma
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/gamma/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/beta
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/beta/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/moving_mean
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/moving_mean/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/moving_variance
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/moving_variance/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/BatchNorm/FusedBatchNorm
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv2/Relu
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/weights
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/weights/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/Conv2D
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/gamma
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/gamma/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/beta
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/beta/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/moving_mean
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/moving_mean/read
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/moving_variance
FirstStageFeatureExtractor/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/moving_variance/read
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/conv3/BatchNorm/FusedBatchNorm
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/add
FirstStageFeatureExtractor/resnet_v1_101/resnet_v1_101/block1/unit_1/bottleneck_v1/Relu

#visualise weight
from tensorflow.python.framework import tensor_util
weight_nodes = [n for n in od_graph_def.node if n.op == 'Const']
for n in weight_nodes:
            print("Name of the node - %s" % n.name)
            print("Value - " )
            print(tensor_util.MakeNdarray(n.attr['value'].tensor))

Value -
[-0.4540853   0.32056493 -0.22912885  0.2541284  -0.9532805  -0.25493076
 -0.5082643  -0.33983043 -0.22494698 -0.3235537  -0.36385655 -0.28415084
 -0.5575271  -0.1910503  -0.49338412 -0.42885196 -0.33558807 -0.6404074
 -0.18031892 -0.2801433  -0.34614867 -0.5399439  -0.15712368 -0.2957037
  0.15714812 -0.48186925 -0.33291766 -0.48722127 -0.2535558  -0.16819339
 -0.43470743 -0.2855552  -0.3963132  -0.42684224 -0.3209245  -0.3658357
 -0.30626386 -0.4134465   0.03801734 -0.43680775 -0.29162335 -0.36223125
 -0.48077616 -0.43840355 -0.39883605 -0.31524658 -0.47961026 -0.41313347
 -0.19943158 -0.9744824  -0.44492397 -0.62325597 -0.4503377  -0.32147056
 -0.32696253 -0.3964685  -0.4328564  -0.28047583 -0.10022314 -0.20008062
 -0.25767517 -0.32787508 -0.7490349  -0.26016906 -0.1388798  -0.00777247
 -0.34971157 -0.37617198 -0.16701727 -0.49006486  0.25721186 -0.2046591
 -0.39323628 -0.6523374  -0.5105675  -0.32751757 -0.2652611  -0.00875285
 -0.2443423  -0.44029924 -0.37004694 -0.23282264 -0.3413406  -0.35088956
 -0.46555945 -0.56252545 -0.5163544  -0.5306529  -0.62014216 -0.24062826
 -0.06821899 -0.33485538 -0.4521361  -0.6593677  -0.46554345 -0.40829748
 -0.49771288 -0.35069707 -0.0229042  -0.2298909  -0.25005338 -0.32683375
 -0.49131876 -0.30173704 -0.29786837 -0.67599934 -0.35004795 -0.20007414
 -0.16419795 -0.49680758 -0.42260775 -0.2726915  -0.6200565  -0.35487327
 -0.3344669  -0.52208656 -0.4569452  -0.12290002 -0.5652516  -0.31340426
 -0.3985747  -0.5281181  -0.7129867  -0.567227   -0.28814644 -0.1302681
 -0.2001429  -0.10916138 -0.68222445 -0.29323065 -0.05704954 -0.22789052
 -0.61558    -0.07655394 -0.52930903 -0.34198323 -0.24209192 -0.5053026
 -0.4004574  -0.15969647 -0.35341594 -0.5591511  -0.40825605 -0.01070203
 -0.7428409  -0.45172128 -0.43380788  0.2568167  -0.6722297  -0.35276502
 -0.6669023  -0.20694211 -0.20189697 -0.5070727  -0.3972058  -0.00848175
 -0.2994657  -0.34944996 -0.3389741  -0.17936742 -0.92425096 -0.05345222
 -0.38853544 -0.39970097 -0.3607101  -0.7013903  -0.10112807 -0.2565767
 -0.34176925 -0.52231157 -0.476935   -0.45604366 -0.5980594  -0.15625392
 -0.42476812 -0.31922927 -0.31709027 -0.28081933 -0.2383788  -0.3822803
 -0.58110493 -0.48278278  0.37628186 -0.28682145 -0.36748675 -0.34278873
 -0.4303303  -0.31955504 -0.1693851  -0.4306607  -0.30947846 -0.29114336
 -0.490207   -0.487192   -0.24403661 -0.30346867 -0.27445573 -0.35093272
 -0.22612163 -0.41189626 -0.24778591 -0.31198287 -0.24912828 -0.40960005
 -0.35579422 -0.43333185 -0.6709562  -0.844466   -0.14793177 -0.2053809
 -0.5682712  -0.23429349 -0.35484084 -0.40705127 -0.16986188 -0.52707803
 -0.371436   -0.3203282  -0.548174   -0.2454479   0.14760983 -0.23899662
 -0.49904364 -0.5957814  -0.24498118 -0.15208362 -0.38576075 -0.4792993
 -0.37565476 -0.48903054 -0.30210334 -0.5700767  -0.21236268 -0.57294637
 -0.27853557 -0.46409875 -0.24420401 -0.48441198 -0.64328116 -0.47033066
 -0.2866155  -0.24524617 -0.682954    0.22307628 -0.4910605  -0.6759475
 -0.5597055  -0.08977205 -0.35018525 -0.326844   -0.407895   -0.4286294
 -0.43290117 -0.43665645 -0.03084541 -0.38888484]
Name of the node - FirstStageFeatureExtractor/resnet_v1_101/block3/unit_23/bottleneck_v1/conv2/BatchNorm/moving_mean
Value -
[-0.15717725  0.07592656  0.10988383 -0.0490528  -0.0106115  -0.15786496
 -0.11409757 -0.06248363 -0.06544019 -0.14081511 -0.17109169 -0.02211305
 -0.03773279 -0.12710223 -0.12394962 -0.09206913 -0.16163616 -0.1723962
 -0.20561686 -0.1415835  -0.06350002 -0.16257662 -0.09603897 -0.13460924
 -0.02432729 -0.04199889 -0.1696589  -0.13546434 -0.06083817 -0.10085563
 -0.09488994  0.04238822 -0.01342436 -0.15949754 -0.17468    -0.17448752
 -0.07917193 -0.12688611 -0.22540613  0.0227522  -0.10866571 -0.05292162
 -0.09184872 -0.15055841 -0.166075   -0.20481528 -0.0362504  -0.03834244
 -0.0642691   0.0847474  -0.05358214 -0.01985169 -0.23435758 -0.14982411
 -0.16710722 -0.15368192 -0.09551494 -0.16474426 -0.10215978 -0.16959386
 -0.20461345 -0.03911749 -0.14563459 -0.00461106 -0.0700466  -0.0968714
  0.00481458 -0.04512146 -0.14357145 -0.19567277 -0.19265638 -0.11200134
 -0.07045556 -0.02379003 -0.10341825 -0.03273268 -0.11432283 -0.23813714
 -0.02153216 -0.14714707 -0.1272525  -0.16946757 -0.1185687  -0.12256996
 -0.10922257  0.11201918 -0.02812816 -0.02523885  0.03150908 -0.15362865
 -0.1581234   0.00402692 -0.15670358 -0.04513093 -0.1437301  -0.01758968
 -0.05778598 -0.14521386  0.01999546 -0.1154804  -0.19333984 -0.06223019
 -0.07321492 -0.07283846 -0.12676379 -0.04754475 -0.12439732 -0.0936267
 -0.1395944  -0.10460664 -0.1278241  -0.11326854 -0.08205313 -0.1579616
 -0.04214557 -0.13230218 -0.15926664 -0.11025801 -0.17300427 -0.03396817
  0.01946657 -0.02238615 -0.1087622   0.05757551 -0.06369423 -0.15768676
 -0.24096929 -0.16477783 -0.08505792 -0.1452452  -0.1228498  -0.18778118
 -0.10847382 -0.18381962 -0.09624809 -0.11529081 -0.08679712 -0.026652
 -0.0709608  -0.13419388 -0.12301534 -0.0762615  -0.1779636   0.0712171
 -0.02847089 -0.03589171 -0.16578905  0.06647447 -0.21369869 -0.11737502
 -0.09483987 -0.1711197  -0.10486519 -0.13668095 -0.09134877 -0.17883773
 -0.09831014  0.00876497 -0.01898824 -0.12447593 -0.11287156 -0.14073113
 -0.14082104 -0.20715335 -0.0960372  -0.07659613 -0.05445954 -0.20973818
 -0.1988086  -0.07440972 -0.01645763 -0.06222945 -0.10685738 -0.11946698
 -0.02095333 -0.22138861 -0.03730138 -0.14171903 -0.2022561  -0.17174341
 -0.10660502 -0.04700039  0.21646874 -0.2798932  -0.0933376  -0.15969937
 -0.11783579 -0.08365067 -0.15353799 -0.09762033 -0.20146982 -0.10279506
 -0.14905539 -0.12379898 -0.12730977 -0.06474843 -0.09232798 -0.07322481
 -0.19277479 -0.04613561 -0.13307215 -0.1302453  -0.17341715 -0.07773575
 -0.04985441 -0.10355914 -0.1078042   0.00853426 -0.13236587 -0.09865464
 -0.00562798 -0.12181614 -0.22204153 -0.05784107 -0.18404393 -0.00629737
 -0.10935344 -0.06820714 -0.0653091  -0.10879692 -0.12568252 -0.1386066
 -0.10166074 -0.05466842 -0.09380525 -0.20807257 -0.09541806 -0.0593087
 -0.12657529 -0.12999491 -0.08768366 -0.11886697 -0.11744718 -0.08663379
 -0.1193763  -0.08805308 -0.1727127  -0.00644481 -0.11248584  0.00345422
 -0.1572065  -0.07471903 -0.09579102 -0.08642395 -0.08458085  0.09465432
 -0.0749066   0.04966704 -0.06954169 -0.05878955 -0.06419392 -0.03276661
 -0.12470958 -0.05546655 -0.227529   -0.18447787]
Name of the node - FirstStageFeatureExtractor/resnet_v1_101/block3/unit_23/bottleneck_v1/conv2/BatchNorm/moving_variance
Value -
[0.0246328  0.15109949 0.08894898 0.18027042 0.17676981 0.03751087
 0.04503109 0.05276729 0.07223138 0.0510329  0.05425516 0.03137682
 0.03304449 0.04246168 0.03573015 0.04623629 0.04350977 0.03313071
 0.04221025 0.04383035 0.04444639 0.03855932 0.03536414 0.03979863
 0.12287893 0.03251396 0.03785344 0.03404477 0.05788973 0.05000394
 0.03611772 0.04200751 0.03447625 0.04483994 0.03660354 0.05133959
 0.03763206 0.03538596 0.0754443  0.03522145 0.03955411 0.03173661
 0.0307942  0.04629485 0.04174245 0.06112912 0.03868164 0.03610169
 0.03457952 0.03306652 0.03208408 0.03130876 0.04425795 0.0543987
 0.04187379 0.05363455 0.04050811 0.03573698 0.03850965 0.0455887
 0.03908563 0.03638468 0.03675755 0.03934622 0.03829562 0.05719311
 0.03649542 0.02670012 0.03625882 0.03489691 0.1415123  0.04595942
 0.04740899 0.0362278  0.03886651 0.02929924 0.03411594 0.05056536
 0.04927529 0.03879778 0.04310857 0.03617069 0.03727381 0.03174838
 0.03664678 0.11009517 0.02481679 0.03278335 0.05939993 0.03593603
 0.03523111 0.02616766 0.03424251 0.0344963  0.04709259 0.03183395
 0.03848327 0.03769235 0.04920188 0.03951766 0.03903662 0.03408873
 0.03334353 0.03571996 0.06089876 0.05937878 0.03344719 0.04584214
 0.04397506 0.03307587 0.03318075 0.04908697 0.03105905 0.05623207
 0.05571087 0.03729884 0.0459931  0.04489287 0.04131918 0.03771564
 0.04307055 0.03846145 0.05100024 0.043197   0.04114237 0.05911661
 0.03956391 0.04361542 0.03280107 0.03139602 0.05827128 0.04082137
 0.03654662 0.04679587 0.0309209  0.03587716 0.03316435 0.02562451
 0.03213744 0.04613245 0.03237009 0.03835384 0.0523162  0.09062187
 0.03235107 0.02755782 0.03724603 0.09937367 0.07468802 0.03093713
 0.02697526 0.04269885 0.0421169  0.03236708 0.03591317 0.05501648
 0.04456919 0.03508786 0.03599152 0.05607978 0.04522029 0.05920529
 0.02929832 0.04003889 0.04818926 0.03470782 0.04554065 0.03561359
 0.05097282 0.03162495 0.03105365 0.0479041  0.04201244 0.03967372
 0.03850067 0.03719724 0.03236697 0.04217942 0.04472516 0.06050858
 0.02926525 0.03916026 0.19374044 0.0456128  0.03878816 0.0363459
 0.03911297 0.03797501 0.04174663 0.04230652 0.03831306 0.04085784
 0.0427238  0.03057992 0.03531543 0.03794312 0.03533817 0.03804426
 0.02861266 0.03188168 0.04924265 0.04050563 0.04611768 0.03238661
 0.03605983 0.02848955 0.0390384  0.02533518 0.04691761 0.04362593
 0.03430253 0.04009234 0.04348955 0.03593319 0.04101577 0.02840054
 0.03196882 0.03733175 0.03510671 0.04594112 0.15954044 0.04420807
 0.04092796 0.02599568 0.04426222 0.05545853 0.04792674 0.05130733
 0.03689643 0.04262947 0.04004824 0.02642712 0.04293796 0.0296522
 0.04023833 0.04849512 0.04770563 0.02930979 0.033105   0.03017242
 0.03861351 0.03882564 0.03877705 0.10539907 0.03036495 0.0441276
 0.02591156 0.07158393 0.03235719 0.04087997 0.02184044 0.03179693
 0.04023989 0.03014399 0.06206222 0.06290652]

{'language': 'en', 'url': 'https://stackoverflow.com/questions/69828783', 'timestamp': '2023-03-29', 'source': 'stackexchange', 'question_score': '1'}


«Laughed Until We Cried» — песня американского кантри-певца Джейсона Алдина, вышедшая 1 августа 2007 года в качестве 2-го сингла с его второго студийного альбома Relentless (2007). Песню написали Ashley Gorley и Kelley Lovelace. Продюсером был Майкл Кнокс. Сингл достиг шестого места в кантри-чарте Hot Country Songs и стал пятым подряд синглом в Top-10 этого хит-парада.
Песня получила умеренные отзывы музыкальной критики и интернет-изданий, а сингл был сертифицирован в золотом статусе RIAA.

Чарты

Итоговые годовые чарты

Сертификации

Примечания

Ссылки

Кантри-песни
Песни 2007 года
Синглы, сертифицированные Американской ассоциацией звукозаписывающих компаний
Песни Джейсона Олдина

{'title': 'Laughed Until We Cried', 'url': 'https://ru.wikipedia.org/wiki/Laughed%20Until%20We%20Cried', 'language': 'ru', 'timestamp': '20230320'}


layout: tag
section-type: tag
title: curva
---
## Tag

{'content_hash': '48551e87ae36e8a4c5b82f5d54313170', 'timestamp': '', 'source': 'github', 'line_count': 5, 'max_line_length': 17, 'avg_line_length': 11.4, 'alnum_prop': 0.631578947368421, 'repo_name': 'marcoC76/marcoc76.github.io', 'id': 'fdb412ccafc1647e5b53ec7764fd01415155df1a', 'size': '62', 'binary': False, 'copies': '1', 'ref': 'refs/heads/master', 'path': 'tags/curva.html', 'mode': '33188', 'license': 'mit', 'language': [{'name': 'CSS', 'bytes': '14495'}, {'name': 'HTML', 'bytes': '60549'}, {'name': 'Ruby', 'bytes': '2490'}, {'name': 'Shell', 'bytes': '462'}]}


AvaChloe . PerfectTimexxx. SweetCuteLia. HotXMelissa.
LouiseFlamesdustingrayalejosexylatinAishaAlexis .ZEUSCUTESammygoddess69DYLANGILOSashaShatalova .BahtanaiSexyEvaGrayKamillaLiGregoryBrownn .VenusInFurs4uNorbertBoy3ReynaAmorLauraMillie .1axxelhornypipesexlatinKamillaLiRonnyBoy4you .PhoebeGrandAshtonTerryTotalsweetheart0FRESHBRITGUY .DreamsLadyNorbertBoy3DellyNiceTattooFlexible .WebSextingZEUSCUTESeasonFANTACYFRESHBRITGUY .alejosexylatinDuedropAshtonTerryCristystar18 .Cristystar18ZEUSCUTEPhoebeGrandMacysex .DeborahXGoldSweettDream20CaioSilvaalessiaBigass .
IreneFrostLeticiaBlaneVenusInFurs4uAsianYannii .CaioSilvaChloeRossXMeRlinXOJolieLexi .sexyx2IreneFrostRedHeadFlirtsweettigrese .MonamiDSashaShatalovaNoirePleasureAnnaMonika .Sub4xDirty69GOLDTATYsexyx2Cristystar18 .PhoenixSoulAishaAlexisIntenselove99Barbarasensualx .NorbertBoy3ZEUSCUTEAsianDreamXEmaTatto .IreneFrostnewTSexprofesorXAlessaxhotDefineOne .SashaShatalovaDaxHunkJolieLexiReighlynn .RonnyBoy4youSammygoddess69SpecialChantalAsianYannii .pipesexlatinDYLANGILONoirePleasureSeasonFANTACY .

{'timestamp': '2019-04-18T19:02:28Z', 'url': 'http://www.hehechat.org/AvaChloe', 'language': 'en', 'source': 'c4'}


Allard Kalff (1962), Nederlands autocoureur en presentator
 Frits Kalff (1934), Nederlands verzekeraar
 Gerrit Kalff (1856-1923), letterkundige
 Jacob Kalff (1821-1903), Nederlands rechter en politicus; vicepresident van de Hoge Raad
 Jacob Adriaan Kalff (1869-1935), politicus en minister
 Jan Kalff (stedenbouwkundige) (1831-1913), ontwerper van 19e-eeuwse stadsuitbreiding van Amsterdam, en directeur Publieke Werken
 Jan Kalff (1901-1974), burgemeester en verzetsstrijder
 Jan Kalff (landschapsarchitect) (1933), Nederlands landschapsarchitect
 Jan Kalff jr., hoofdredacteur Algemeen Handelsblad
 Louis Kalff (1897-1976), grafisch vormgever
 Marie Kalff (1874-1959), Frans-Nederlandse actrice
 Martin Kalff, Nederlands journalist (1848-1898)
 Peter Jan Kalff (1937), bankier en topfunctionaris

Zie ook: Kalf

{'title': 'Kalff', 'url': 'https://nl.wikipedia.org/wiki/Kalff', 'language': 'nl', 'timestamp': '20230320'}


Ruda () označuje v geologii takový minerál nebo horninu, který obsahuje ekonomicky významný podíl chemických prvků, většinou kovů, umožňující jejich průmyslovou těžbu nejčastěji za účelem vytváření zisku.

Dělení rud a jejich složení
Rudy se dají rozdělit na monometalické a polymetalické, dále na rudy železa a rudy barevných (neželezných) kovů.

Rudné minerály pocházejí většinou ze skupin oxidů, sulfidů, silikátů, nebo i čistých prvků.

Ekonomická využitelnost
Ruda musí obsahovat takové prvky, které jsou cenné, jsou v ekonomicky využitelných koncentracích a jsou získatelné pomocí dostupných technologií.

Ložiska mohou obsahovat takový rozsah mineralizace, který v určité době nemusí být díky technologii nebo ekonomickým podmínkám využitelný. Tato situace se však v závislosti na změnách cen, potřeb průmyslu nebo vojenského využití suroviny může změnit. Například stará ložiska zlata považovaná za „vytěžená“ jsou díky dnešním technologiím a stálé potřebě zlata i jeho vysokým cenám znovu exploatována.

Důležité rudní minerály
 Argentit: Ag2S surovina stříbra
 Baryt: BaSO
 Bauxit Al2O3 surovina hliníku
 Beryl: Be3Al2(SiO3)6
 Bornit: CuFeS
 Kasiterit: SnO
 Chalkopyrit: CuFeS
 Chromit: (Fe, Mg)CrO surovina chromu
 Cinabarit: HgS ruda rtuti
 Kobaltit: (Co, Fe)AsS
 Columbit-Tantalit: (Fe, Mn)(Nb, Ta)O
 Galenit: PbS
 Zlato: Au, typicky asociováno s křemenem
 Hematit: FeO
 Ilmenit: FeTiO
 Magnetit: FeO
 Molybdenit: MoS
 Pentlandit:(Fe, Ni)S
 Pyroluzit:MnO
 Scheelit: CaWO
 Sfalerit: ZnS
 Uraninit (pitchblende): UO surovina kovového uranu
 Wolframit: (Fe, Mn)WO

Související články
 Páskovaná železná ruda
 Hlušina

Externí odkazy

Geologická terminologie
Mineralogie
Metalurgie

{'title': 'Ruda', 'url': 'https://cs.wikipedia.org/wiki/Ruda', 'language': 'cs', 'timestamp': '20230320'}


Događaji
 bitka kod Himere
 bitka kod Salamine
 Bitka kod Termopila
 Bitka kod Artemizija

Rođenja
Euripid, starogrčki dramatičar

Smrti

{'title': '480. pr. Kr.', 'url': 'https://hr.wikipedia.org/wiki/480.%20pr.%20Kr.', 'language': 'hr', 'timestamp': '20230320'}


«Русь православная и самодержавная» — еженедельная общественно-политическая и литературная газета.

История
Издавалась с июня 1905 г. по сентябрь 1916 г. в г. Казани (в типографиях императорского Казанского университета, И. С. Перова и др.). Выходила со значительными перерывами: с июня по октябрь 1905 г. — 20 номеров (последний — 14 октября 1905 г.), затем по причине забастовок печатников и отказов в исполнении заказов со стороны владельцев местных типографий выпуск прекратился. В 1907 г. он вновь возобновился, затем — в сентябре 1915 г. — из-за трудностей военного времени был снова приостановлен. Редактор-издатель — казначей и типограф императорского Казанского университета, председатель комитета «Казанского общества трезвости» и совета казанского отдела «Русского собрания» А. Т. Соловьёв.

Содержание и авторы
Придерживалась консервативно-черносотенной направленности, пропагандировала правомонархические и трезвеннические взгляды, активно выступала против революции и либеральных реформ. Позиционировалась одновременно как печатный орган казанского отдела Русского собрания и Казанского общества трезвости. Распространялась в качестве приложения к журналу «Деятель» (в 1905 году рассылалась его подписчикам бесплатно, затем — по подписке). Постоянных рубрик и авторов не имела. Большинство материалов представляло собой перепечатки из столичных и провинциальных правомонархических («Земщина», «Мирный труд», «Московские ведомости», «Русское знамя» и др.) и трезвеннических изданий.

В газете публиковались манифесты, рескрипты, речи императора Николая II, обращения главного совета Союза русского народа и его председателя Александра Дубровина, воззвания в связи с выборами в Государственную думу, речи правых депутатов, статьи о борьбе с пьянством, табакокурением и хулиганством, протоколы собраний, объявления и репортажи о заседаниях, съездах и акциях правомонархических и трезвеннических организаций, о собраниях выборщиков, различных изданиях, информация благотворительного характера, сводки новостей, доклады, циркуляры, всеподданнейшие адреса, письма в редакцию, стихи патриотического содержания.

Большое внимание уделялось публикациям обращений к пастве и воззваний в связи с различными событиями религиозной и общественной жизни церковных иерархов и известных православных деятелей, в том числе протоиерея Иоанна Кронштадтского, епископов Андрея, Антония, Никона и других. Значительное место занимали материалы по школьному, национальному и религиозному вопросам, в том числе — направленные против «еврейского засилья», «раскольников» (старообрядцев), «панисламистской пропаганды» и «магометанских союзов».

Примечания

Ссылки
Алексеев И. Е. Русское национальное движение в Казанской губернии и Татарстане: конец XIX — начало XX веков (опыт словаря). Казань, 2004.

Монархические газеты
Газеты Российской империи
История Казани
Печатные издания, возникшие в 1905 году
Печатные издания, закрытые в 1916 году
Газеты Казани


function performAjaxOperation(target) {

  triggerEvent(target,'ajax-start');

  window.setTimeout(function(){
    triggerEvent(target,'ajax-complete')
  },5000);

}

{'content_hash': 'b28edee28b3ddd71b93cecf2fb1aafdf', 'timestamp': '', 'source': 'github', 'line_count': 9, 'max_line_length': 40, 'avg_line_length': 18.444444444444443, 'alnum_prop': 0.7168674698795181, 'repo_name': 'chroda/secretsofjavascriptninja', 'id': 'dca34c39489f678838477aea4ed2879111827da3', 'size': '166', 'binary': False, 'copies': '2', 'ref': 'refs/heads/master', 'path': 'ninja-code/chapter-13/ajaxy-operation.js', 'mode': '33188', 'license': 'mit', 'language': [{'name': 'CSS', 'bytes': '194'}, {'name': 'HTML', 'bytes': '162334'}, {'name': 'Java', 'bytes': '432'}, {'name': 'JavaScript', 'bytes': '19627'}]}


Maroslele község Csongrád-Csanád vármegye Makói járásban.

Földrajza

Maroslele Magyarország délkeleti részén, Csongrád-Csanád vármegyében, a Tisza és a Maros között, az utóbbi jobb partján fekszik. A falutól nem messze torkollik a Maros a Tiszába. A folyók szabályozása előtt erősen vízjárta vidék volt, ahol hatalmas nádasok, ingoványos mocsarak borították a tájat. A falu réti agyagra épült, amely száraz időben mélyen berepedezik, tartós esőzés után pedig sártengerré változik.

A nyár igen meleg, a napsütéses órák száma eléri a 2050-et. Az évi középhőmérséklet 11,4 fok. Évente 5–600 milliméter csapadék esik.

Szomszédai: észak felől Hódmezővásárhely, északkelet felől Óföldeák, délkelet felől Makó, dél felől Ferencszállás és Klárafalva, délnyugat felől Deszk – mindhárom utóbbi a Maros túlsó, bal partján –, nyugat felől Szeged Tápairét nevű városrésze, északnyugat felől pedig Algyő Tisza-balparti településrészei, Rákóczitelep és Nagyfa.

Megközelítése

A település a környező városok közül Makóról a legkönnyebben megközelíthető, a Hódmezővásárhelytől idáig húzódó 4414-es úton; a község távolsága Makótól körülbelül 12 kilométer nyugati, Vásárhelytől pedig mintegy 18 kilométer déli irányban. Északkeleti szomszédai, Földeák és Óföldeák felől a 4416-os úton érhető el a község.

Korábban Szeged felől, a tápéi kompon átkelve is meg lehetett közelíteni a falut, a 4412-es úton (körülbelül 17 kilométeres utazással), de ez a lehetőség 2013. december 2-án megszűnt, mert a tápéi komp leállt. A 2011 áprilisában átadott M43-as autópálya azonban kiváltotta ezt az útvonalat, mivel közvetlenül Maroslele belterülete mellett halad el, és csomópontja is van itt: az M5-ös autópályától számított 24. kilométerszelvénynél lehet közvetlenül lehajtani a sztrádáról a községbe.

Hódmezővásárhelyről szinte óránként indul buszjárat Makóra, amely a községen halad át; Maroslele belterületén 5 megállóhelye található. A településről még indulnak járatok Hódmezővásárhelyen keresztül Szentesre, Csongrádra, Kecskemétre és Budapestre is. Földeákról is jár busz, amely a községen át az M43-as autópálya segítségével Szegedre megy (5012-es Maroslele-Szeged-buszjárat). Közösségi közlekedését a Volánbusz biztosítja.

Története
Először 1274-ben említik Lele (Leleu, Lelee in Chanad) néven a Maros közeli községet. A község nevének eredete máig sem tisztázott, de az elnevezés alapjául szolgáló személynév valószínűleg a lélek szó családjába tartozó régi magyar Lél-ből származik.

A község az 1552-es török hadjárat után 1596-ban a tatárok által pusztul el végképp. A közeli Makó városának lakosai kétszáz évig csak legelőként hasznosítják területét, míg a 18. század végén makói zsellérek telepednek le a térségben és dohánytermesztéssel kezdenek foglalkozni. Nem sokkal később a Csanádi egyházmegye birtokába kerül a terület, majd 1873-ban jogilag is elismert község lett.

Lakói a 20. század elején megváltják a püspöktől az addig bérelt földjeiket. Dessewffy Sándor csanádi püspök a falu nagy jótevője volt: hozzájárult a templom és az iskola építéséhez, támogatta a falu lakosságát, akik hálából, az ő tiszteletére 1908-ban Püspöklelére változtatták a község nevét. Emlékét őrzi a templom előtt felállított kőkereszt is, amelyen Dessewffy arcképe is látható.

A két világháború sok helybeli életét követelte. 1944. október 8-án orosz csapatok vonultak be a községbe. 1950-ben a tanács megalakulása után a falu nevét Maroslelére változtatták.

Közélete

Polgármesterei
 1990–1994: Szőnyi Erzsébet (független)
 1994–1998: Szőnyi Erzsébet (független)
 1998–2002: Szőnyi Erzsébet (független)
 2002–2006: Szőnyi Erzsébet (független)
 2006–2010: Dr. Martonosi György (Fidesz)
 2010–2014: Dr. Martonosi György (Fidesz–KDNP)
 2014–2019: Dr. Martonosi György Sándor (független)
 2019-től: Drimba Tibor (független)

Nevezetességei

 Annus József emléktáblája
 Dessewffy Sándor emlékére állított kereszt
 Az első világháborúban elesettek emléktáblája
 Feszület kőtalapzaton a község határában
 A gázprogram emléktáblája
 Helytörténeti gyűjtemény
 Hősök kútja
 Római katolikus temploma 1900 és 1901 között épült neogót stílusban
 Az Általános Művelődési Központ, egy jellegzetes alföldi napsugaras ház
 Községháza
 A köztársaság kikiáltásának 10 éves évfordulójára emelt kopjafa
 A második világháború hősi halottjainak emléktáblája
 Petőfi Sándor emléktáblája
 Vetyeháti-erdő
 A szeptemberben megrendezett egyhetes Lelei Napok programsorozat
 Október második vasárnapján, a Mária naphoz kapcsolódóan megrendezett búcsú

Híres emberek
 Itt született Annus József író, országygűlési képviselő.
 Itt született Lengyel István színész.

A község jelene

A község gazdasága a mezőgazdaságra épül. A termesztett növények közé tartozik a fűszerpaprika, különböző gabonafélék és takarmánynövények, valamint a híres lelei fokhagyma. Ez utóbbi növény a település címerében is helyt kapott.

A községet irányító választott képviselet mára elérte, hogy a legtöbb utca szilárd burkolatú, a házak nagy része földgázfűtésű és telefonnal felszerelt. 1986-ban megalakult az Általános Művelődési Központ (ÁMK), mely helyet ad az óvodának, az általános iskolának és a könyvtárnak is. Komoly gondot okoz a munkanélküliség növekedése, a pályakezdő munkanélküliek egyre gyarapodó száma. 1993-ban Maroslele munkaképeskorú lakosságának 16%-a volt állástalan. 2012-ben új termelő üzem, a Kereskedelmi és Gazdainformációs Központ névre hallgató önkormányzati vállalkozás jött létre a településen, amely 27 hektár állami földön gazdálkodik, és 30 embert foglalkoztat egy tökmagolaj sajtoló és palackozó üzemben.

Népesség

Nemzetiségi megoszlás
A község lakosságának 2001-ben 87,8%-a magyar, 0,2%-a német volt. A népesség 12,2%-a nem válaszolt vagy nemzetisége ismeretlen. A településen cigány kisebbségi önkormányzat működik.

A 2011-es népszámlálás során a lakosok 90,6%-a magyarnak, 1% cigánynak, 0,2% németnek, 0,2% románnak, 0,2% szerbnek mondta magát (9,4% nem nyilatkozott; a kettős identitások miatt a végösszeg nagyobb lehet 100%-nál).

Felekezeti megoszlás
Maroslele felekezeti megoszlása 2001-ben a következőképpen alakult: 59,7% vallotta magát római katolikusnak, görögkatolikusnak 0,3%, református volt a település lakosságának 10,4%-a, evangélikus 1,1%-a. Más egyházhoz, felekezethez tartozott 1,1%, 12,6% nem volt vallásos. A lakosság 14,8%-a nem válaszolt, vagy ismeretlen volt a felekezeti megoszlása.

2011-ben a vallási megoszlás a következő volt: római katolikus 48,3%, református 9,4%, evangélikus 0,5%, görögkatolikus 0,2%, felekezeten kívüli 24,8% (15,4% nem nyilatkozott).

Kapcsolódó szócikkek
 Maroslele oktatástörténete

Jegyzetek

Források
 Maroslele Makó honlapján
 Maroslele az utazom.com honlapján

 Makó és vidéke (Szerkesztő: Domokos László) Hagymafesztivál Alapítvány, Makó

További információk

 Maroslele község hivatalos honlapja

Csongrád-Csanád megye települései

{'title': 'Maroslele', 'url': 'https://hu.wikipedia.org/wiki/Maroslele', 'language': 'hu', 'timestamp': '20230320'}


keywords: workflows-fault-tolerance; resilience; simulation; cloud computing; high-performance computing.
keywords: grid computing; cloud computing; virtual; next generation sequencing; hybrid architecture.
keywords: IEEE 802.16j; WiMAX; relay network; obstacle; radio wave obstruction.
keywords: IEEE 802.11; wireless multi-hop networks; power consumption; modulation method.
keywords: Channel Zapping; Quality of Experience; Mean Opinion Score; IPTV; gaming.
keywords: IPv4, IPv6, LTE, ROHC.

{'timestamp': '2019-04-26T13:47:07Z', 'url': 'http://www.thinkmind.org/index.php?view=instance&instance=ICNS+2012', 'language': 'en', 'source': 'c4'}


frecgenga ? apostacy; apost&a-short;sia = GREEK, Cot. 16, Lye.
frec-máse, fræc-máse, an; f. The nun bird, titmouse; p&a-long;rus cær&u-short;leus :-- Frecmáse sigitula ? Wrt. Voc. 281, 9.
FRÉCNE, fræ-acute;cne; adj. Horrible, savage, audacious, wicked, daring, dangerous, perilous; d&i-long;rus, asper, aust&e-long;rus, atrox, audax, per&i-long;c&u-short;l&o-long;sus :-- Ðæ-acute;r ðú findest frécne feohtan there thou wilt find a savage contest, Andr. Kmbl. 2699; An. 1352. Ðæt biþ frécne wund that is a perilous wound, Exon. 19 a; Th. 48, 12; Cri. 770. He ána genéðde frécne dæ-acute;de he alone ventured on the daring deed, Beo. Th. 1782; B. 889. Be ðære frécnan cóðe of the dangerous disorder, L. M. 2, 33; Lchdm. ii. 236, 12. He sceal fleón ðone frécnan wlite ðises middaneardes he should avoid the dangerous splendour of this earth, Bt. 12; Fox 36, 20. On ða frécnan tíd temp&o-short;re discr&i-long;m&i-short;nis. Bd. 1, 8; S. 479, 21. Frécne þúhton egle eáláda the fearful sea-ways seemed terrible, Andr. Kmbl. 880; An. 440. Hwonne him Freá frécenra síþa reste ageáfe when the Lord should give him rest from his perilous journeyings, Cd. 71; Th. 86, 8; Gen. 1427: Ps. Th. 143, 8. To frécnum þingum for daring things, Lchdm. iii. 158, 16. Ðæt he him afirre frécne geþohtas that he should banish from him wicked thoughts, Cd. 219; Th. 282, 10; Sat. 284. He frécnu gestreón funde he found dangerous wealth, Bt. Met. Fox 8, 115; Met. 8, 58. Ðe ða frécnan deórwurþnessa funde who found the dangerous treasures, Bt. 15; Fox 48, 24. [O. Sax. frókan wild, bold, impudent.] DER. fela-frécne: ge-frécnod.
frécne, fræ-acute;cne; adv. Horribly, savagely, fiercely, severely, insolently, boldly, dangerously; atr&o-long;c&i-short;ter, d&u-long;re, audacter, per&i-long;c&u-short;l&o-long;se :-- Se wráða boda fylgde him frécne the dire messenger boldly followed him, Cd. 32; Th. 43, 9; Gen. 688: Beo. Th. 1923; B. 959: 3386; B. 1691. Hie hit frécne genéðdon they severely oppressed it, Cd. 170; Th. 214, 17; Exod. 570: Exon. 105 b; Th. 401, 23; Rä. 21, 16: Ps. Th. 67, 2: 103, 33: 104, 25. Ðæt him hit frécne ne meahte sceððan that it might not dangerously wound him, Beo. Th. 2069; B. 1032: Ps. Th. 114, 3.
frécnen-spræc, e; f. An audacious or hostile speech; audax vel host&i-long;lis sermo :-- Gyf Frysna hwylc frécnenspræce ðæs morðorhetes myndgiend wæ-acute;re if any of the Frisians, by audacious speech, should call to mind [lit. should be a rememberer of] this deadly feud, Beo. Th. 2213, note; B. 1104.
frecnes ? glis, Cot. 96, Som. Lye: also clammy earth; argilla, Som. Ben. Frecnis glus, Glos. Epnl. Reed. 157, 25.
frécnes, -nis, -ness, -nyss danger, peril, Bd. 2, 7; S. 509, 24: 3, 19; S. 549, 46: Coll. Monast. Th. 25, 1. v. frécennes.
frécne-stíg, e; f. A dangerous way or path, steep place, precipice; præc&i-short;p&i-short;tium. Som. Ben. Lye.
frédan; p. de; pp. ed [fród wise, prudent] To feel, perceive, know, be sensible of; sent&i-long;re. DER. ge-frédan.
fréfergende = fréfrigende comforting; part. of fréfrian, Cd. 220; Th. 284, 7; Sat. 318.
fréfran; p. ede; pp. ed To comfort, console; cons&o-long;l&a-long;ri :-- Ic findan meahte ðone ðe mec freóndleásne fréfran wolde I might find one who would comfort me friendless, Exon. 76 b; Th. 288, 9; Wand. 28: Andr. Kmbl. 733; An. 367. Hwílum ic fréfre ða ic æ-acute;r winne on sometimes I comfort those whom ere I war against, Exon. 102 b; Th. 389, 13; Rä. 7, 7: 27 b; Th. 82, 19; Cri. 1341. Hí earme fréfraþ they comfort the poor, 33 b; Th. 106, 29; Gú. 48. Ðu me fréfredest tu me cons&o-long;l&a-long;tus es, Ps. Th. 85, 17: Blickl. Homl. 135, 23. Cwæþ he ðæt gewunalíce word ðara fréfrendra dixit s&o-short;l&i-short;to cons&o-long;lantium serm&o-long;ne, Bd. 5, 5; S. 681, 9. Fréfrede cons&o-long;l&a-long;ti, Ps. Spl. 125, 1. DER. ge-fréfran. v. fréfrian.
fréfrend, es; m. A comforter, consoler; cons&o-long;l&a-long;tor :-- Méðra fréfrend comforter of the weak, Exon. 62 a; Th. 227, 13; Ph. 422. Fréfrend ic sóhte, findan ic ne mihte cons&o-long;lantem me quæs&i-long;vi, et non inv&e-long;ni, Ps. Th. 68, 21: 31, 8: Blickl. Homl. 135, 33: 131, 23. v. fréfriend.
fréfrian; p. ode, ade; pp. od To comfort, console; cons&o-long;l&a-long;ri :-- Ðæt hig woldon hí fréfrian ut cons&o-long;l&a-long;rentur eas, Jn. Bos. 11. 19. Hwænne fréfrast ðú me quando cons&o-long;l&a-long;b&e-short;ris me? Ps. Spl. 118, 82. Ðæt he fréfrige me ut cons&o-long;l&e-long;tur me, 118, 76. Dú fréfrodest me tu cons&o-long;l&a-long;tus es me, 85, 16: 118, 50: Ps. Th. 118, 82. Fréfra ðíne mæcgas on móde comfort thy young men in mind, Andr. Kmbl. 842; An. 421. He héran ne wolde Fæder fréfergendum [ = fréfrigendum] he would not obey the comforting Father, Cd. 220; Th. 284, 7; Sat. 318. [Laym. uroefrien; p. freuerede: Orm. froffrenn, frofrenn: O. Sax. fró&b-bar;rean: O. H. Ger. flóbarjan, fluobarén.] DER. a-fréfrian, ge-. v. frófor.
fré-friend, es; m. A comforter, the Comforter, the Paraclete; cons&o-long;l&a-long;tor, paracl&e-long;tus :-- Ne cymþ se fréfriend to eów Paracl&e-long;tus non v&e-short;niet ad vos, Jn. Bos. 16, 7: 14, 16: Ps. Th. 134, 14.
fréfrung, e; f. A comforting, comfort, consolation; cons&o-long;l&a-long;tio :-- He nolde náne fréfrunge underfón n&o-long;luit cons&o-long;l&a-long;ti&o-long;nem acc&i-short;p&e-short;re, Gen. 37, 35.
fregn asked, inquired, Andr. Kmbl. 2327; An. 1165, = frægn; p. of frignan.
fregnan to inquire, Mt. Kmbl. Lind. 21, 24: Mk. 11, 29. v. frignan.
fremde did, effected, Cd. 181; Th. 227, 11; Dan. 185, = fremede; p. of fremman.
fremde foreign, strange, Beo. Th. 3387; B. 1691. v. fremede.
fremdian; p. ode; pp. od To alienate, estrange; ali&e-long;n&a-long;re, R. Ben. 4.
fremdnys, -nyss, e; f. Strangeness, the condition of a foreigner; peregr&i-long;n&i-short;tas, Som. Ben. Lye.
freme; adj. Good, strenuous, bold; b&o-short;nus, str&e-long;nuus :-- Fremu folces cwén the folk's bold queen, Beo. Th. 3868; B. 1932. v. fram, from; adj.
freme, an; f. Advantage, profit, benefit, good; comm&o-short;dum, quæstus, em&o-short;l&u-short;mentum, b&o-short;num :-- Hýþ vel freme comm&o-short;dum, quæstus, Ælfc. Gl. 81; Som. 73, 25; Wrt. Voc. 47, 30. Ðæs we mágon fremena gewinnan of what we may gain of advantages, Cd. 22; Th. 28, 18; Gen. 437. Ðú us unfreóndlíce fremena þancast thou thankest us unkindly for our benefits, Cd. 128; Th. 162, 31; Gen. 2689: 89; Th. 110, 24; Gen. 1843: 135; Th. 170, 27; Gen. 2819. Gesæ-acute;ton land unspédigran fremena gehwilcre they inhabited a land more barren of every good, 46; Th. 59, 13; Gen. 963. v. fremu.
freme do, effect, perform, Ps. Th. 68, 17; impert. of fremman.
FREMEDE, fremde, fremþe, fræmde; adj. Strange, foreign, estranged from, devoid of; ali&e-long;nus, peregr&i-long;nus, ali&e-long;n&a-long;tus, aversus, rem&o-long;tus, expers :-- He biþ fremede Freán ælmihtigum he shall be estranged from almighty God, Salm. Kmbl. 67; Sal. 34. Ðonne beó we fremde fram eallum ðám gódum then should we be cut off from all those good things, St. And. 8, 10. Feorcund mon oððe fremde a far-coming or a strange man, L. In. 20; Th. i. 114, 15: L. Edg. ii. 7; Th. i. 268, 21: L. C. S. 25; Th. i. 390, 24: Ps. Spl. C. T. 68, 11. Me biþ se éðel fremde the land is strange to me, Exon. 105 a; Th. 398, 6; Rä. 17, 3: Cd. 5; Th. 7, 13; Gen. 105: Beo. Th. 3387; B. 1691: Ps. Th. 136, 4. Ðe ðara gefeána sceal fremde weorþan who shall be devoid of those joys, Andr. Kmbl. 1780; An. 892: Hy. 6, 30; Hy. Grn. ii. 286, 30. On fremdes fæðm into the embrace of a strange [man], Cd. 92; Th. 118, 26; Gen. 1971. Fremdre meówlan of a strange damsel, Exon. 80 b; Th. 302, 20; Fä. 39: Bt. Met. Fox 3, 21; Met. 3, 11. On fremedum in ali&e-long;no, Lk. Bos. 16, 12. Ne læ-acute;ne ðínum bréðer nán þing to híre, ac fremdum menn non fæn&e-short;r&a-long;b&e-short;ris fratri tuo ad &u-long;s&u-long;ram p&e-short;c&u-long;niam, sed ali&e-long;no. Deut. 23, 20. On lande fremdre in terra ali&e-long;na, Ps. Spl. 136, 5. Ne ðú fremedne god gebiddest neque ad&o-long;r&a-long;bis deam ali&e-long;num, Ps. Th. 80, 9. Wilt ðú fremdne monnan grétan wilt thou address a strange man? Exon. 92 b; Th. 346, 20; Sch. 1. Him folcweras fremde wæ-acute;ron the people were strange to him, Cd. 89; Th. 110, 31; Gen. 1846. Folca fremdra of strange people, Ps. Th. 104, 39. Of fremedum ab alienis, Mt. Bos. 17, 25, 26. Ðæt ða þing ðíne ágene síen, ða ðe heora ágene gecynd ðe gedydon fremde that those things can be thine own, which their own natures have made foreign to thee, Bt. 14, 1; Fox 40, 32. Gif ðú fremdu godu bigongest if thou wilt worship strange gods, Exon. 67 b; Th. 250, 2; Jul. 121. On ða fremdan þístro into the strange darkness, Bt. 3, 2; Fox 6, 10. [Piers P. fremmed strange; Chauc. fremde, fremed foreign, strange: Orm. fremmde strange, not of kin: Scot. fremyt, fremmyt: Plat. fromd, frömd: O. Sax. fremiði, fremethi, fremit: Frs. freamd: O. Frs. framd, fremed: Dut. vreemd: Ger. fremd: M. H. Ger. vremede, vremde: O. H. Ger. framadi, fremidi: Goth. framaþs: Dan. fremmed: Swed. främmande: Icel. framandi a man of distinction, stranger,] v. Grm. R. A. pp. 396 sqq. Schmid. s. v. fremde.
fremede, pl. fremedon made, did, performed, Elen. Kmbl. 942; El. 472: Bd. 1, 8; S. 479, 26; p. of fremman.
fremednes, -ness, -nyss, e; f. [fremed, pp. of fremman and -ness, -nyss] An accomplishment, fulfilment; peractio :-- Næfþ ðæt swefen næ-acute;nige fremednesse gódes ne yfeles the dream has no accomplishment for good or evil, Lchdm. iii. 154, 17. Næ-acute;nige fremednysse no fulfilment, iii. 156, 1.
fremeþ performs, practises, Beo. Th. 3406; B. 1701; 3rd sing. pres. of fremman.
fremfull; adj. [freme good; ful, full full] Beneficent, profitable; b&e-short;n&e-short;f&i-short;cus :-- Ða ðe ánweald ofer hig habbaþ synd fremfulle genemned qui p&o-short;test&a-long;tem h&a-short;bent s&u-short;per eos b&e-short;n&e-short;f&i-short;ci v&o-short;cantur, Lk. Bos. 22, 25.
fremfullíce; adv. Effectually, beneficially; effic&a-long;c&i-short;ter, R. Ben. interl. Prol.
fremfulnes, -ness, e; f. Profitableness, utility; ut&i-short;l&i-short;tas, R. Ben. 53.

{'timestamp': '2019-04-23T23:06:21Z', 'url': 'http://lexicon.ff.cuni.cz/html/oe_bosworthtoller/b0332.html', 'language': 'en', 'source': 'c4'}


Дъбижовец е езеро, което се намира във Вакарелската планина, част от Ихтиманската Средна гора, на 2 км западно от Вакарел. Водите му са на 810 м. надморска височина. Площта му е 50 на 50 м.

Съвсем близо до него се простира черен път. Риболовът е честа практика по бреговете му. Целият район е заобиколен от природни, исторически и духовни обекти. В близост се намират Вакарелският манастир „Св. Петка“, параклисите „Св. Богородица“ и „Св. св. Петър и Павел“, както и няколко чешми.

Източници

Езера в България


#ifndef	_MACHINE_INTR_MACHDEP_H_
#define	_MACHINE_INTR_MACHDEP_H_

#define	INTR_VECTORS	256

#define	MAX_PICS		5
#define	MAP_IRQ(node, pin)	powerpc_get_irq(node, pin)

/*
 * Default base address for MSI messages on PowerPC
 */
#define	MSI_INTEL_ADDR_BASE		0xfee00000

extern device_t root_pic;

struct trapframe;

driver_filter_t powerpc_ipi_handler;

void	intrcnt_add(const char *name, u_long **countp);

void	powerpc_register_pic(device_t, uint32_t, u_int, u_int, u_int);
u_int	powerpc_get_irq(uint32_t, u_int);

void	powerpc_dispatch_intr(u_int, struct trapframe *);
int	powerpc_enable_intr(void);
int	powerpc_setup_intr(const char *, u_int, driver_filter_t, driver_intr_t,
	    void *, enum intr_type, void **);
int	powerpc_teardown_intr(void *);
int	powerpc_bind_intr(u_int irq, u_char cpu);
int	powerpc_config_intr(int, enum intr_trigger, enum intr_polarity);

#endif /* _MACHINE_INTR_MACHDEP_H_ */